防止Bash中的短路

我想要

  1. 生成匹配文件列表
  2. 知道是否至少有一种模式匹配

如果有任何 pdf 文件,以下将不起作用,因为第一个compgen将返回true而第二个compgen将不会执行。

{ compgen -G "*.pdf" || compgen -G "*.txt"; }

有没有办法防止短路?

回答

使用扩展的 glob 模式。

shopt -s extglob
compgen -G '*.@(pdf|txt)'


回答

使用 ; 只会返回最后一次 compgen 的结果。我仍然需要所有 compgens 的逻辑或逻辑来知道是否有任何匹配。

您可以编写逻辑来自己处理退出状态。简短版本可能如下所示:

{ cmd1; ret=$?; cmd2; ! ((ret | $?)); }


以上是防止Bash中的短路的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>