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
...到cat
ls -al
命令输出的每个文件的内容。这有帮助吗?
需要注意的是ls
是陶瓷命令而不是管道命令。换句话说,最好不要依赖 ls
命令管道的输出。然而,像 find
这样的实用程序是管道命令,最好用作管道的一部分。
我有一个列表参数需要一个一个地传递给另一个命令,因为该命令一次只接受一个参数,我可以使用任何 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
...到cat
ls -al
命令输出的每个文件的内容。这有帮助吗?
需要注意的是ls
是陶瓷命令而不是管道命令。换句话说,最好不要依赖 ls
命令管道的输出。然而,像 find
这样的实用程序是管道命令,最好用作管道的一部分。