【发布时间】:2013-10-28 00:19:22
【问题描述】:
如果测试为真,如何使用简单的一行测试并执行多个命令? 以下方法不起作用:
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
【问题讨论】:
-
...这就是
if和[的设计目的,您为什么认为“应该有更简单的方法”? -
FWIW,你可以链接
&&:[ ! -f "$f" ] && echo ... && break。但是,如果你输入||,请注意,与类似c 的语言不同,它与&&具有相同的优先级——a || b && c等效于{a || b} && c,而不是您可能期望的a || {b && c}。跨度>
标签: bash if-statement for-loop