【发布时间】:2019-02-04 22:01:23
【问题描述】:
#!/bin/bash
step=0.05
short=0.05
long=0.95
for firstloop in {1..20}; do
ratio=0.05
for secondloop in {1..20} ; do
echo $short $long $ratio >> file.txt
time python3 main.py $short $long $ratio >> file.txt
ratio= `echo $ratio + $step` | bc
done
short= `echo $short + $step`| bc
long= `echo $long + $step`| bc
done
当我执行代码时,这是我得到的:
./script.sh: line 10: 0.05: command not found
real 0m25.329s
user 0m24.770s
sys 0m0.263s
./script.sh: line 10: 0.05: command not found
real 0m34.666s
user 0m32.319s
sys 0m0.623s
./script.sh: line 10: 0.05: command not found
real 0m31.425s
user 0m29.329s
sys 0m0.588s
./script.sh: line 10: 0.05: command not found
我尝试了许多变体,以便可以使用浮点值递增变量 short、long 和 ratio。我知道除非我使用 bc,否则我无法在 shell 中处理浮点数数学。我还没有成功。我做错了什么?
在修复空格错误和 bc 的格式后,如下面的答案中所述。我留下了这个输出:
real 0m0.871s
user 0m0.497s
sys 0m0.166s
++ echo '0 + 0.05'
++ bc
+ ratio=.05
+ for secondloop in '{1..20}'
+ echo 0 1 .05
+ python3 main.py 0 1 .05
Traceback (most recent call last):
File "main.py", line 46, in <module>
main()
File "main.py", line 17, in main
probability = [float(x) for x in sys.argv[:2]]
File "main.py", line 17, in <listcomp>
probability = [float(x) for x in sys.argv[:2]]
ValueError: could not convert string to float: 'main.py'
这基本上是我在 3 变量的值发生变化时反复得到的。
【问题讨论】:
-
在做任何赋值时不要使用空格
a=1是正确的,a = 1是不正确的。 -
@PS。感谢您的意见。
-
Shellcheck 发现此代码存在多个问题。
-
@pjh 没有检测到拼写检查问题
-
这是Shellcheck,而不是“拼写检查”。 Shellcheck 对代码发出 14 条警告,就像现在一样。