我使问题复杂化了,但是考虑到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。
$ 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
如果
cat -n
将更改为剪贴板,则效果最佳。感谢一百万爱德。别客气。无论是有问题的命令
clipboard
或cat -n
或其他一些命令需要管道输入不要紧,如何有条件地管道的问题一个命令,而不是每个人都有clipboard
自己的系统上,因此使用cat -n
的例子是一般更为有用,以飨读者之所以使用这个论坛,是clipboard
因为每个人都可以复制/粘贴我的答案进行尝试。