我正在尝试在我的 bash 终端中循环执行 python 命令,以便为某个参数获取多个浮点值。这是我到目前为止所拥有的:for ((t=0; t <= 165; t=t+5)); do python3 filename 1 [echo $t/100] 0; done我想以 0.05 的增量循环遍历 0 到 1.65 之间的值。只有 bash 似乎不接受这样的浮点值,并且 python 无法识别 echo 命令。我遇到了诸如“无法将 [echo 转换为浮点数”之类的错误,或者如果我替换方括号 ( 则语法不正确。我该怎么做才能解决这个问题?理想的情况是我的脚本运行:python3 filename 1 0.00 0python3 filename 1 0.05 0...python3 filename 1 1.65 0没有他们同时运行一个接一个。
5 回答
吃鸡游戏
TA贡献1829条经验 获得超7个赞
使用 bash 版本 4.0+,您可以使用大括号扩展和字符串操作来制定该浮点数:
for n in {000..165..5}; do echo python3 filename 1 "${n%??}.${n#?}" 0 done
${n%??}
从字符串末尾删除 2 个字符,${n#?}
从字符串开头删除 1 个字符。
噜噜哒
TA贡献1784条经验 获得超7个赞
没有太多模糊的最简单方法是使用 sequence 命令seq。此命令允许您创建一个具有任意增量的数字序列:
seq FIRST INCREMENT LAST
对于 OP,有生成数字 0.00 0.05 0.10 ... 1.65 的请求,因此需要做的就是
for x in $(seq 0 0.05 1.65); do
python3 filename 1 "$x" 0
done
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
在内部执行循环bc,使用 bash 格式化数字,使用以下方式调用脚本xargs:
LC_NUMERIC=C printf '%0.2f\n' \
$(<<<'scale=2;i=0;while(i<=1.65){i;i+=.05}' bc) |
xargs -l -I{} python3 filename 1 {} 0
慕斯王
TA贡献1864条经验 获得超2个赞
bash不做浮点运算。使用外部命令,如bc.
for ((t=0; t <= 165; t=t+5));
do python3 filename 1 "$(echo "scale=2; $t / 100" | bc)" 0
done
添加回答
举报
0/150
提交
取消