在 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 或任何可用語言中進行命令列整數和浮點計算?

相關內容