![针对某些条件执行多个命令](https://linux22.com/image/197288/%E9%92%88%E5%AF%B9%E6%9F%90%E4%BA%9B%E6%9D%A1%E4%BB%B6%E6%89%A7%E8%A1%8C%E5%A4%9A%E4%B8%AA%E5%91%BD%E4%BB%A4.png)
我知道即使在 时也会执行第二个命令i != 1
。
(( i == 1)) && florg="${fl%-*.png}.org" ; touch "$florg"
但希望这两个命令只执行一次。
答案1
最简单的事情是使用常规if
语句:
if ((i == 1)); then
florg="${fl%-*.png}.org"
touch "$florg"
fi
否则使用大括号对命令进行分组:
(( i == 1)) && { florg="${fl%-*.png}.org" ; touch "$florg"; }
看3.2.5.3 分组命令在手册中。
如果不需要保留变量,可以使用括号(在子 shell 中执行命令)。括号对空格和分号更宽容:
((i == 1)) && (florg="${fl%-*.png}.org"; touch "$florg")