说,我有一个文件 foo.txt
指定 N
参数
arg1
arg2
...
argN
我需要传递给命令 my_command
如何使用文件的行作为命令的参数?
原文由 Yoo 发布,翻译遵循 CC BY-SA 4.0 许可协议
说,我有一个文件 foo.txt
指定 N
参数
arg1
arg2
...
argN
我需要传递给命令 my_command
如何使用文件的行作为命令的参数?
原文由 Yoo 发布,翻译遵循 CC BY-SA 4.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 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答793 阅读✓ 已解决
2 回答3.2k 阅读
如果您的 shell 是 bash(以及其他),则
$(cat afile)
的快捷方式是$(< afile)
,因此您可以编写:记录在“命令替换”部分的 bash 手册页中。
或者,让您的命令从标准输入读取,所以:
mycommand < file.txt