在bash脚本中,如何将包含在文本文件中的值提供给程序执行的开关?

我想在Linux中编写一个bash脚本,多次执行一个程序(例如3次),并根据文本文件中提供的值列表指定开关值。

例如,假设有一些程序programname有一个开关 – 开关,它将浮点数作为input。 所以,程序的执行可能是这样的:

 programname -switch 0.05 

其中0.05是传递给开关 – 开关的特定值。

现在,我想阅读某种文本文件,该文件有一个值列表,我想连续传递给-switch的单独调用。 我的文本文件test.txt可能包含这些数据:

 0.05 3.19 100.75 

我想写一个bash脚本,将在文本文件中读取并有效地进行这些调用:

 programname -switch 0.05 programname -switch 3.19 programname -switch 100.75 

我在想这样的事情:

 #!/bin/bash for i in {1..3} do programname -switch $x done 

但是,我应该input什么来代替$x ? 换句话说,我不知道如何在test.txt读取,并逐个提供其内容,以便for循环运行。 你有什么build议吗? 谢谢!

values.txt:

 0.05 3.19 100.75 

script.sh:

 #!/bin/bash counter=1 for value in $(cat values.txt) do programname -switch $value -counter $counter counter=$(expr $counter + 1) done 

没有必要使用任何外部工具。 计数器增量和read可以如图所示一起完成,或者计数器增量可以在循环内的任何位置移动。

 while ((i++)); read -r value do programname -switch "$value" -other "$i" done < test.txt