在 Linux 中的参数列表上循环命令

Ale*_*lex 4 linux pipe

如何使用另一个命令通过管道传递的参数执行相同的命令?

作为从源中提取文件名的结果,我得到:

    $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)

可能会为你工作。


kub*_*zyk 7

我只使用 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)