我有 2 个命令,我想像这样通过管道传输:command1 |命令 2
。当 command1
根本不输出任何内容时,command2
仍然输出。我该如何停止
命令 1 |当
不输出?command1
不输出任何内容时,command2
具体例子:
function find_string_in_file {
find . -iname "*$1*" | xargs ack-grep "$2"
}
alias findag='find_string_in_file'
如果 filename.py
在当前目录或其子文件夹中不存在,则 findag filename.py "some word"
仍然返回与 ack 相同的输出-grep "some word"
.
最佳答案
管道不是有条件的,因此您不能根据前面阶段的退出状态禁用后面的阶段。对于您的特定示例,您可以修改 find
命令以避免需要管道。
find . -iname "*$1*" -exec ack-grep "$2" '{}' +
如果没有匹配的文件,exec
测试将不会被触发。
关于linux - 当管道的第一个命令不输出时如何不输出任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15044779/