shell,将参数列表一个一个地传递给命令

shell, pipe a list of arguments one by one to command

我有一个列表参数需要一个一个地传递给另一个命令,因为该命令一次只接受一个参数,我可以使用任何 shell 管道吗?提前谢谢你。

例如,

$ ls -al | awk '{print }'

该命令将 return 文件夹名称列表,然后我需要将这些名称作为参数发送给另一个命令,该命令每次执行只接受命令。

我建议使用find:

find . -mindepth 1 -maxdepth 1 -type d -exec your_command {} \;

这将为当前目录中除 ...

之外的任何文件夹调用 your_command

我不明白 ls -al | awk ... 的类比。包含此代码示例有什么意义?

如果您有一个以空格分隔的参数列表,使用像 xargs 这样的实用命令将默认将每个参数逐一提供给命令。您可以更改此默认行为,但您似乎不需要这样做。您可以按如下方式使用 xargs...

ls -al | awk '{print }' | xargs cat

...到catls -al命令输出的每个文件的内容。这有帮助吗?

需要注意的是ls是陶瓷命令而不是管道命令。换句话说,最好不要依赖 ls 命令管道的输出。然而,像 find 这样的实用程序是管道命令,最好用作管道的一部分。