我想知道这两者之间到底有什么区别
a=$[1+1]
a=$((1+1))
let a=1+1
a=$(expr 1 + 1 )
Run Code Online (Sandbox Code Playgroud)
所有 4 都将变量 a 赋值为 2,但有什么区别?
从我目前发现的情况来看, expr 速度较慢,因为它不是一个实际的 shell 内置函数。但仅此而已。
尝试对脚本进行 bash 算术运算,但$e直到最后才更新。输出不言自明。
max=5
for e in $(seq 1 1 $max); do
percent=$(( $e/$max*100 ))
echo "echo $e / $max : = $percent"
done
Run Code Online (Sandbox Code Playgroud)
Tl;DR:以百分比形式显示 1..5。
输出 :
echo 1 / 5 : = 0
echo 2 / 5 : = 0
echo 3 / 5 : = 0
echo 4 / 5 : = 0
echo 5 / 5 : = 100
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
I need to add some real numbers in a script. I tried:
let var=2.5+2.5
Run Code Online (Sandbox Code Playgroud)
which gives me an error - invalid arithmetic operator and then I tried:
let var=2,5+2,5
Run Code Online (Sandbox Code Playgroud)
which does not give me an error, but it gives me a wrong result -2 in this case.
Why? How to add real numbers using let or other command?