linux - 从 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.txt
。d0
但是,我的目标是为从0.0
到的每个值生成输出文件1.0
(以 为步骤0.01
)。一个约束是d1=1-d0
. 输出文件应命名为ouputxyz.txt
wherexyz
对应于 的值中的三位数字d0
。(例如:输出文件名是output010.txt
when d0=0.10
)。是否可以从 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
推荐阅读
- android - Paytm 校验和不匹配 - Android Paytm SDK 错误:330
- python - 查找dict中是否存在数组且不为空
- javascript - 滑动通过时将轮播重置回第一张幻灯片 - 使用 swiper.js
- sql-server - SSRS 图形表达式 - 自定义周过滤器/表达式
- java - Spring Boot @Autowire 在 @TestCofiguration 内部类中不起作用
- ansible - 如何定期(每周)自动重启远程机器?
- ibeacon - 如何使用网络蓝牙找到信标?
- java - 如何在 ResourceChangeListener(eclipse 插件)中添加标记?
- node.js - nodejs api不转发从另一个服务收到的响应
- php - 来自 Yandex.Direct 的 GET 请求为空