我试图从 Ubuntu 终端 执行的 C 程序文件(在 Desktop
上)名为 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 程序文件生成的输出写入名为 output.txt
的 .txt 文件。但是,我的目标是为从 0.0
到 1.0
的每个 d0
值生成输出文件(以 0.01
)。一个约束是 d1=1-d0
。输出文件应命名为 ouputxyz.txt
,其中 xyz
对应于 d0
值中的三位数字。 (示例:当 d0=0.10
时,输出文件名为 output010.txt
)。是否可以从 Ubuntu 终端本身为此任务编写一个循环? (我不想为此在原始程序中添加另一个循环。)
顺便说一句,如果您需要有关我正在尝试做的事情的任何其他详细信息,或者您认为可以改进和/或使问题更具体,请在评论中告诉我。我很乐意详细说明。
最佳答案
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
关于linux - 从 Ubuntu 终端使用不同的命令行参数循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50984409/