Bash

Bash 腳本列印表達式而不是結果

  • September 7, 2021

我正在嘗試計算客戶提供的參數數量和第一個參數的乘積。這裡的參數是 10、15,所以參數的總數是 2。現在我希望 shell 執行 2*10(因為 10 是第一個參數)。我得到的不是答案,而是程式碼。

我寫的程序:

r=$(echo "$1 \* $#")
echo "Following are the numbers you entered $@ "
echo "first number : $1. and second number: $2."
echo "total number of entered numbers: $#"
echo "expected result: $r"

結果:

root@LAPTOP-J:~# bash test.sh 10 15
Following are the numbers you entered 10 15
first number : 10. and second number: 15.
total number of entered numbers: 2
expected result: 10 \* 2
root@LAPTOP-J5JNFL7K:~#

好吧,echo它的作用是將其作為參數給出的字元串列印出來。就像迴聲聽起來像原來的聲音回來了。

echo foo bar列印foo barecho "$var"列印$var(在 shell 擴展值之後)的內容;如果這些是 和 的值,則echo "$1 \* $#"列印。(星號在雙引號中並不特殊,因此不會刪除反斜杠。)10 \* 2``$1``$#

你可能已經把它和 , 混淆了expr,它可以做算術。

但是shell中不需要外部算術命令,只需使用算術擴展即可$(( .. )),例如:

r=$(( $1 * $# ))

但請注意,如果$1包含除數字之外的其他內容,則結果可能是奇數(或者甚至執行嵌入在 中的任意命令$1,至少在 Bash 中)。對於嚴肅的工作,您可能需要先檢查那裡的值。

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