如何用 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”)時,似乎我仍然得到字串。

答案1

POSIX shell 中的算術$用和 雙括號完成(( ))

echo "$(($num1+$num2))"

您可以從中分配;另請注意,$內部變數名稱上的運算符(())是可選的):

num1="$((num1+num2))"

還有expr

expr $num1 + $num2

在腳本編寫中$(())更可取,因為它避免了命令的分叉/執行expr

答案2

現有的答案是純bash,所以它會比這更快,但它只能處理整數。如果需要處理浮點數,則必須使用外部程式bc

$ echo 'scale=4;3.1415+9.99' | bc
13.1315

scale=4告訴我們bc要使用四位小數。請參閱man bc以獲取更多資訊。

答案3

您也可以使用$[ ... ]結構。在這種情況下,我們使用 Bash 內建的機制,它更快,使用起來更方便。由於我們知道 $[ 和 ] 之間的所有內容都被視為表達式,因此我們不需要在變數前面加上$。同樣,我們不需要避免*將其視為一種模式。

num1=2
num2=3
echo $[num1 + num2]
5

答案4

極簡主義者

total=0
((total+=qty))

相關內容