如何使用另一个命令通过管道传递的参数执行相同的命令?
作为从源中提取文件名的结果,我得到:
$some_command 文件名1 文件名2 文件名3 ... 文件名N
我想用这些文件名创建文件touch
。如何遍历touch
这些名称?
the*_*ive 11
您可以使用 xargs 和 -n1 为每个管道参数运行一次命令
$some_command | xargs -n 1 touch
Run Code Online (Sandbox Code Playgroud)
然而,在接受多个参数的触摸的情况下
touch `$some_command`
Run Code Online (Sandbox Code Playgroud)
可能会为你工作。
我只使用 for ... do ... done 用于非常简单的情况。
对于更复杂/危险的场景:
command | sed 's/^/touch /'
Run Code Online (Sandbox Code Playgroud)
这只是打印预期的命令。查看结果,然后执行相同的管道操作sh -x
(该-x
标志用于调试):
command | sed 's/^/touch /' | sh -x
Run Code Online (Sandbox Code Playgroud)