linux - 从 Ubuntu 终端使用不同的命令行参数循环

标签 linux bash ubuntu gcc

我试图从 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.01.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/

相关文章:

linux - 如何在 Vim 中搜索以空格分隔的单词

linux - 如何将 ctrl+d 插入到我的 linux 脚本中?

c++ - 使用带有 linux 的 std::filesystem 是坏的还是文件系统树无法访问?

python - django、python、postgres 和 web 部署

ubuntu - 无法安装 Composer - php-fpm

linux - Bluez 的 Avrcp 配置

c - 是否可以打印日志文件的特定部分?

linux - 在 Bash 脚本中获取以太网设备名称列表

regex - 正则表达式末尾的 "\2"是什么意思

macos - 用于使用多个条件查找文件的 OSX 终端命令