重複の可能性あり:
bash または利用可能な任意の言語で、コマンドラインの整数と浮動小数点の計算を行うにはどうすればよいでしょうか?
0.050
bash スクリプトで変数を単純に再割り当て (具体的には ずつ増分) したいです。私が書いた次のスクリプトでは、i
は (整数) インデックスで、mytime
は 10 進数/倍精度浮動小数点数です。「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
2つの問題:
- 空白を使用しないでください。代入は であり
VAR=value
、VAR = value
またはVAR =value
ではありませんVAR= value
。 シェルの空白で区切られたトークンは 1 つである必要があり、2 つや 3 つではありません。 - シェルはそのような演算は行いません。整数演算の場合は、 と入力する
VAR=$(($VAR+1))
か、この優れた質問を読んで、他の無数の方法 (整数、浮動小数点、中置、後置、場合によっては前置、任意の精度、その他) を知ることができます。bash または利用可能な言語で、コマンドラインの整数と浮動小数点の計算を行うにはどうすればよいでしょうか?