你正在使用
|
(管道)将一个命令的输出引导到另一个命令。你要找的是
&&
操作员仅在前一个命令成功时执行下一个命令:
cp /templates/apple /templates/used && cp /templates/apple /templates/inuse && rm /templates/apple
或
cp /templates/apple /templates/used && mv /templates/apple /templates/inuse
总结(非详尽地)bash的命令运算符/分隔符:
-
|
管道标准输出(
stdout
)将一个命令转换为另一个命令的标准输入。注意
stderr
不管发生什么,它仍然会进入默认的目的地。
-
|&
两条管道
斯特杜特
和
标准错误
将一个命令转换为另一个命令的标准输入。非常有用,在bash版本4及更高版本中提供。
-
&&
执行
&&
除非上一次成功。
-
||
执行
||
只是前一次失败了。
-
;
执行
;
始终不考虑上一个命令是否成功。除非
set -e
之前被调用,这导致
bash
因错误而失败。