如何将空格分隔的值文件作为一系列参数传递?

如何将空格分隔的值文件作为一系列参数传递?

假设我有一个文件,其中包含我要安装的软件包列表,用空格或换行符分隔。如何将该文件传递给我的包管理器?

答案1

尝试xargs命令,例如:

cat file | xargs ls

或者

 cat file | xargs gzip -c

答案2

将文件读入数组:

token=($(<list.txt))
yourCommand ${token[@]}

如果标记是文件名,包含空格并由换行符分隔,则这将不起作用,因为标记通常在 shell 中由空格分隔。

答案3

假设包名称不包含任何通配符(即没有\[?*),您可以使用命令替换:

install-packages $(cat list-of-packages.txt)

假设包名称不包含任何字符\"',您可以使用参数。请注意,这会重定向软件包列表中的命令输入install-packages,因此如果安装的程序需要一些交互式输入,则它可能不起作用。

xargs install-packages <list-of-packages.txt

相关内容