为了账号安全,请及时绑定邮箱和手机立即绑定

从 bash 循环 python 命令,不能使用浮点数作为命令的参数

从 bash 循环 python 命令,不能使用浮点数作为命令的参数

月关宝盒 2023-03-08 15:15:31
我正在尝试在我的 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 个字符。


查看完整回答
反对 回复 2023-03-08
?
噜噜哒

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


查看完整回答
反对 回复 2023-03-08
?
翻过高山走不出你

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


查看完整回答
反对 回复 2023-03-08
?
慕斯王

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


查看完整回答
反对 回复 2023-03-08
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

在 python 脚本中进行除法,只传递整数。



查看完整回答
反对 回复 2023-03-08
  • 5 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信