Bash
如何用 bash 添加(減去等)兩個數字?
我可以通過以下方式讀取數字和操作:
echo "First number please" read num1 echo "Second number please" read num2 echo "Operation?" read op
但後來我所有添加數字的嘗試都失敗了:
case "$op" in "+") echo num1+num2;; "-") echo `num1-num2`;; esac
跑:
First number please 1 Second mumber please 2 Operation? +
輸出:
num1+num2
…或者…
echo $num1+$num2;; # results in: 1+2
…或者…
echo `$num1`+`$num2`;; # results in: ...line 9: 1: command not found
似乎當我嘗試添加添加(“2 + 2”而不是“4”)時,我仍然得到字元串。
POSIX shell 中的算術是用
$
雙括號完成的(( ))
:echo "$(($num1+$num2))"
您可以從中分配;還要注意
$
裡面變數名的操作符(())
是可選的):num1="$((num1+num2))"
還有
expr
:expr $num1 + $num2
在腳本
$(())
中更可取,因為它避免了expr
命令的分叉/執行。
現有的答案是純 bash,所以它會比這更快,但它只能處理整數。如果需要處理浮點數,則必須使用外部程序
bc
。$ echo 'scale=4;3.1415+9.99' | bc 13.1315
scale=4
告訴使用bc
四位小數。有關man bc
更多資訊,請參閱。