如何使用由另一个命令通过pipe道传递的参数执行相同的命令?
从源文件中提取文件名的结果是:
$ some_command
文件名1
文件名2
filename3
...
filenameN
我想用这些文件名与touch创build文件。 我怎样才能循环这些名字?
我只用来做…做非常简单的情况。
对于更复杂/危险的情况:
command | sed 's/^/touch /'
这只是打印想要的命令。 检查结果,然后执行同样的事情pipe道到sh -x ( -x标志用于debugging):
command | sed 's/^/touch /' | sh -x
您可以使用xargs和-n1为每个pipe道参数运行一次命令
$some_command | xargs -n 1 touch
在触摸的情况下,但接受多个参数
touch `$some_command`
可能会为你工作。
for i in `$some_command`; do touch $i; done
如果文件名包含空格,那么下面的内容将解决它们:
some_command | while read filename ; do touch "$filename" ; done
这将创build名为的文件:
文件名1
文件名2
命名文件3
等等
当然,假设它确实产生了这些名字。
“some_command | xargs touch”可能会诀窍,但是有两个缺陷: