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

标签 linux bash shell sh

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

例如,假设有一些程序 programname 有一个开关 -switch 将 float 作为输入。因此,该程序的一次执行可能会显示为:

programname -switch 0.05

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

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

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

最佳答案

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

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

关于linux - 在 bash 脚本中,如何将文本文件中包含的值提供给程序执行的开关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11277199/

相关文章:

mysql - 如何将 grep 结果的值设置为 bash 中的变量?

linux 终端输出

bash - 为每次运行的 bash 脚本维护日志

linux - 阿特拉斯安装 : Really need to get past CPU throttle check

android - Android 终端中的 Wget

bash - ECS/Fargate 容器定义命令参数

linux - 如何删除文件中不需要的字符(使用 shell 脚本)

c : 4x14bit + 1x8bit within a 64 bit 'container' 中的自定义数据类型

python - 丢失了重要的 .py 文件(被覆盖为 0byte 文件),但旧版本仍然作为模块加载到 IPYTHON 中——可以检索吗?

bash - 在 bash 中,为什么 if [ 1 ] 不会失败?