在 bash 脚本中重新分配(特别是递增)变量

在 bash 脚本中重新分配(特别是递增)变量

可能的重复:
如何在 bash 或任何可用语言中进行命令行整数和浮点计算?

0.050我想简单地在 bash 脚本中重新分配一个变量(具体来说,将其增加)。在我编写的以下脚本中,i是一个(整数)索引,mytime是一个小数/双精度/浮点数。 “ps”(皮秒)是我在计算中使用的时间单位。

#!/bin/bash
mytime = 0.000
for i in {1..3}
do
echo "$i: $mytime ps"
mytime = mytime + 0.050
done

但是,当我使用运行该脚本时bash test.sh,出现以下错误消息:

test.sh: line 2: mytime: command not found
1:  ps
test.sh: line 6: mytime: command not found
2:  ps
test.sh: line 6: mytime: command not found
3:  ps
test.sh: line 6: mytime: command not found

为什么它似乎被解释mytime为命令或函数,而不是变量?你能帮我纠正这个问题吗?

答案1

for i in $(seq 1 0.05 3); do
  # loop body
  echo i equals $i
done

答案2

两个问题:

  1. 不要使用空白。赋值是VAR=value, 不是VAR = value,VAR =valueVAR= value。它必须是一个 shell 空格分隔的标记,而不是两个或三个)。
  2. shell 不做这样的算术。对于整数数学,你可以说VAR=$(($VAR+1)),或者你可以用无数种其他方式(整数,浮点,中缀,后缀,甚至可能是前缀,任意精度和厨房水槽)来阅读这个优秀的问题:如何在 bash 或任何可用语言中进行命令行整数和浮点计算?

相关内容