Bash shell:如何將bc計算結果指派給變數並列印出來?

Bash shell:如何將bc計算結果指派給變數並列印出來?

我正在嘗試複製程式碼這裡在此輸入影像描述

不管出於什麼原因,它在我的電腦上不起作用。輸出,而不是數值,才是命令本身。

apple$ x='echo "var=500;var%=7;var"|bc'
apple$ $x
"var=500;var%=7;var"|bc

我想知道這是為什麼。我做錯了什麼?

答案1

來源使用反引號 ( `) 來指示指令替換。執行反引號內指定的命令,並將結果放在其位置。在本例中,這是一個簡單的變數賦值,因此指令的結果被賦值給變數。

-x透過bash 選項很容易看出這一點:

$ x=`echo "var=500;var%=7;var"|bc`
++ echo 'var=500;var%=7;var'
++ bc
+ x=3

您使用的是單引號,而不是反引號字元。單引號指示 shell 保留文字值而不對其內容套用任何類型的處理。結果,命令按原樣分配給變數。這是相應的-x輸出:

$ x='echo "var=500;var%=7;var"|bc'
+ x='echo "var=500;var%=7;var"|bc'

最後,要列印變數內容,您應該使用echoor printf。當“x”的值為3時,運行$x會給予-bash: 3: command not found錯誤訊息。運行$x在您的情況下起作用只是因為該echo命令是變數內容的一部分。

答案2

正如 Haxiel 所指出的,您很可能使用的是單引號,而不是反引號字元。但比使用反引號 ( `) 更好,我建議您使用$()。反引號已棄用,並且$()與 POSIX 相容。

在你的例子中你可以這樣做:

x=$(echo "var=500;var%=7;var" | bc)
echo "$x"

或在單行中:

echo "var=500;var%=7;var" | bc

相關內容