我有一个列表参数需要逐个传递给另一个命令,因为该命令只接受一个参数,我可以使用任何shell管道吗?提前谢谢。
例如,
$ ls -al | awk '{print $9}'
该命令将返回文件夹名称列表,然后我需要将这些名称作为argotment发送到anther命令,该命令仅接受每次执行的命令。
答案 0 :(得分:4)
我不理解ls -al | awk ...
类比。包含此代码示例有什么意义?
如果你有一个以空格分隔的参数列表,那么使用像xargs
这样的实用程序命令将默认为每个参数逐个提供一个命令。您可以更改此默认行为,但这似乎不是您需要的。您可以使用xargs
,如下所示......
ls -al | awk '{print $9}' | xargs cat
... cat
ls -al
命令输出的每个文件的内容。这有帮助吗?
应该注意的是ls
是瓷器命令,而不是管道命令。换句话说,最好不要依赖ls
的输出作为命令管道。但是,像find
这样的实用程序是一个管道命令,最好用作管道的一部分。
答案 1 :(得分:1)
我建议使用find
:
find . -mindepth 1 -maxdepth 1 -type d -exec your_command {} \;
这将为your_command
和.
..