在[test]之后执行多个命令

时间:2013-10-19 02:45:53

标签: bash if-statement for-loop

如果测试成立,我如何使用简单的单行测试并执行多个命令? 以下不起作用:

for f in $source_dir/*.mov
do
   [ ! -f "$f" ] && echo "No files in source directory. Exiting."; break || continue
   # a bunch of commands
done

我使用下面的代码让它工作,但我觉得应该有更简单的方法。

for f in $source_dir/*.mov
do
   if [ ! -f "$f" ]; then
      echo "No files in source directory.  Exiting."
      break
   else
      # a bunch of commands
   fi
done

1 个答案:

答案 0 :(得分:4)

使用{

[[ ! -f "$f" ]] && { this; that; break; } || { the_other; ...; }

这是否“更简单”是一个美学问题。

使用[[代替[是可选的。但它通常会更好。