管道与命令替换

管道与命令替换

我尝试使用 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

就如此容易

相关内容