如何使用文件的行作为命令的参数?

新手上路,请多包涵

说,我有一个文件 foo.txt 指定 N 参数

arg1
arg2
...
argN

我需要传递给命令 my_command

如何使用文件的行作为命令的参数?

原文由 Yoo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 560
2 个回答

如果您的 shell 是 bash(以及其他),则 $(cat afile) 的快捷方式是 $(< afile) ,因此您可以编写:

 mycommand "$(< file.txt)"

记录在“命令替换”部分的 bash 手册页中。

或者,让您的命令从标准输入读取,所以: mycommand < file.txt

原文由 glenn jackman 发布,翻译遵循 CC BY-SA 3.0 许可协议

如前所述,您可以使用反引号或 $(cat filename)

没有提到的,我认为需要注意的是,你必须记住,shell 会根据空格分解该文件的内容,将它找到的每个“单词”作为参数提供给你的命令。虽然您可以将命令行参数括在引号中,以便它可以包含空格、转义序列等,但从文件中读取不会做同样的事情。例如,如果您的文件包含:

 a "b c" d

你会得到的论点是:

 a
"b
c"
d

如果要将每一行作为参数提取,请使用 while/read/do 构造:

 while read i ; do command_name $i ; done < filename

原文由 Will 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题