首页 > 解决方案 > 从 Ubuntu 终端循环使用不同的命令行参数

问题描述

Desktop我试图从Ubuntu 终端执行的 C 程序文件 (on )被命名为distribution.c.

我目前正在使用:

<admin-name>@<admin-name>-Latitude-E4310:~/Desktop$ g++ -o test distribution.c
<admin-name>@<admin-name>-Latitude-E4310:./test d0=0.3 d1=0.7 >output.txt

这适用于将 .c 程序文件生成的输出写入名为 .txt 的文件output.txtd0但是,我的目标是为从0.0到的每个值生成输出文件1.0(以 为步骤0.01)。一个约束是d1=1-d0. 输出文件应命名为ouputxyz.txtwherexyz对应于 的值中的三位数字d0。(例如:输出文件名是output010.txtwhen d0=0.10)。是否可以从 Ubuntu 终端本身为此任务编写一个循环?(我不想为此在原始程序中添加另一个循环。)

顺便说一句,如果您需要有关我正在尝试做什么的任何其他详细信息,或者您认为该问题可以改进和/或更具体,请在评论中告诉我。我很乐意详细说明。

标签: linuxbashubuntugcc

解决方案


Bash 不支持浮点运算 - 所以你必须求助于类似的东西bc- 如下例所示。

最简单的做法是将其放在 Bash 脚本中。(您需要bc安装。)

for ((i=0; i<=100; i++))
do
    x=`echo "scale=2; $i/100" | bc`
    y=`echo "scale=2; 1-$x" | bc`
    d0=`printf %.2f $x`
    d1=`printf %.2f $y`
    filename=`printf output%03d.txt $i`
    ./test d0=$d0 d1=$d1 >$filename
done

推荐阅读