我尝试使用 linux 命令行和管道进行测试echo {1..3} | touch
,但它不起作用。我取得了结果touch $(echo {1..3})
。
为什么我无法像第一个示例那样使用管道将 echo 生成的列表传递给 touch ?
答案1
感谢 Steeldriver 的评论,它引导我找到了答案。
管道运算符仅在命令接受来自 stdin 的参数时才起作用,在这种情况下,像 touch 或 rm 这样的命令则不起作用,另一种解决方案是使用命令替换,如示例中所示
touch $(echo {1..3})
或者通过使用 xargs 将输入从标准输入转换为命令的参数,因此可以执行以下操作
echo {1..3} | xargs touch
就如此容易