防止Bash中的短路
我想 生成匹配文件的列表 知道是否至少有一个模式匹配 如果存在任何pdf文件,则以下操作将不起作用,因为第一个compgen将返回true,而第二个compgen将不会执行防止Bash中的短路,bash,short-circuiting,Bash,Short Circuiting,我想 生成匹配文件的列表 知道是否至少有一个模式匹配 如果存在任何pdf文件,则以下操作将不起作用,因为第一个compgen将返回true,而第二个compgen将不会执行 { compgen -G "*.pdf" || compgen -G "*.txt"; } 是否有防止短路的方法?使用一个 使用;将只返回最后一个compgen的结果。我仍然需要所有计算机的逻辑or来知道是否有匹配项 您可以自己编写逻辑来处理退出状态。简短版本可能如下所示: { cm
{ compgen -G "*.pdf" || compgen -G "*.txt"; }
是否有防止短路的方法?使用一个
使用;将只返回最后一个compgen的结果。我仍然需要所有计算机的逻辑or来知道是否有匹配项
您可以自己编写逻辑来处理退出状态。简短版本可能如下所示:
{ cmd1; ret=$?; cmd2; ! ((ret | $?)); }
怎么样
files=*.pdf*.txt
compgen-W${files[*]}
这会中断包含空格的文件,但可以使用IFS来解决这一问题。所以不要使用| |?@KamilCuk Using;将只返回最后一个compgen的结果。我仍然需要所有计算机的逻辑or来知道是否有匹配项。
{ cmd1; ret=$?; cmd2; ! ((ret | $?)); }