温馨提示:本文翻译自stackoverflow.com,查看原文请点击:scripting - How to pipe on a condition in Bash
bash pipe scripting

scripting - 如何在Bash中的条件下进行管道传输

发布于 2020-03-27 10:16:42

我使问题复杂化了,但是考虑到Bash中的一行条件,是否有一种将命令传递到另一个命令的方法?

基本上我现在有这个

if [ "$check" -eq 1 ]; then
    echo -n "foo" | xclip -selection clipboard
else
    echo -n "foo"
fi

我想知道Bash中是否有将其转换为类似以下内容的方式:

echo -n "foo" && [ "$check" -eq 1 ] | xclip -selection clipboard

如果$ check == 1,则“ foo”将通过管道传递到剪贴板,否则内容将输出到stdout,并且管道永远不会激活,并且什么也不会写入剪贴板。我希望这是单线的,在这里我只调用一次echo。

查看更多

查看更多

提问者
szybia
被浏览
186
Ed Morton 2019-07-03 21:10
$ check=0
$ echo "foo" | { if (( check == 1 )); then cat -n; else cat -; fi; }
foo

$ check=1
$ echo "foo" | { if (( check == 1 )); then cat -n; else cat -; fi; }
     1  foo