3

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

例如,假设某个程序programname有一个-switch将浮点数作为输入的开关。因此,程序的一次执行可能会读取:

programname -switch 0.05

其中 0.05 是传递给 switch 的特定值-switch

现在,我想读入某种文本文件,其中包含我想-switch在单独调用中连续传递的值列表programname。我的文本文件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

但是,我应该输入什么来代替$x?换句话说,我不确定如何在循环运行test.txt时逐一读取并提供其内容。你有什么建议吗?谢谢!-switchfor

4

2 回答 2

4

无需使用任何外部实用程序。计数器增量和read可以如图所示一起完成,或者计数器增量可以在循环内的任何位置移动。

while ((i++)); read -r value
do
    programname -switch "$value" -other "$i"
done < test.txt
于 2012-06-30T20:27:29.930 回答
1

值.txt:

0.05
3.19
100.75

脚本.sh:

#!/bin/bash

counter=1
for value in $(cat values.txt)
do
    programname -switch $value -counter $counter
    counter=$(expr $counter + 1)
done
于 2012-06-30T19:58:45.273 回答