在以下示例echo
语句中,无论管道中先前命令的退出代码如何,都会执行:
asemenov@cpp-01-ubuntu:~$
asemenov@cpp-01-ubuntu:~$ false|echo 123
123
asemenov@cpp-01-ubuntu:~$ true|echo 123
123
asemenov@cpp-01-ubuntu:~$
我希望echo
命令仅在前一个命令的零退出代码上执行,即我想实现这种行为:
asemenov@cpp-01-ubuntu:~$ false|echo 123
asemenov@cpp-01-ubuntu:~$
在bash中可能吗?
这是一个更实际的例子:
asemenov@cpp-01-ubuntu:~$ find SomeNotExistingDir|xargs ls -1
find: `SomeNotExistingDir': No such file or directory
..
..
files list from my current directory
..
..
asemenov@cpp-01-ubuntu:~$
xargs ls -1
如果find
失败则没有理由执行。