Bash
Bash 腳本列印表達式而不是結果
我正在嘗試計算客戶提供的參數數量和第一個參數的乘積。這裡的參數是 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 bar
;echo "$var"
列印$var
(在 shell 擴展值之後)的內容;如果這些是 和 的值,則echo "$1 \* $#"
列印。(星號在雙引號中並不特殊,因此不會刪除反斜杠。)10 \* 2``$1``$#
你可能已經把它和 , 混淆了
expr
,它可以做算術。但是shell中不需要外部算術命令,只需使用算術擴展即可
$(( .. ))
,例如:r=$(( $1 * $# ))
但請注意,如果
$1
包含除數字之外的其他內容,則結果可能是奇數(或者甚至執行嵌入在 中的任意命令$1
,至少在 Bash 中)。對於嚴肅的工作,您可能需要先檢查那裡的值。