Bash

如何用 bash 添加(減去等)兩個數字?

  • June 1, 2021

我可以通過以下方式讀取數字和操作:

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更多資訊,請參閱。

引用自:https://unix.stackexchange.com/questions/93029