如何將此結果分配給shell變量?如何將輸出分配給一個shellscript變量?
輸入:
echo '1+1' | bc -l
輸出:
2
嘗試:
(沒有工作)
#!bin/sh
a=echo '1+1' | bc -l
echo $a
如何將此結果分配給shell變量?如何將輸出分配給一個shellscript變量?
輸入:
echo '1+1' | bc -l
輸出:
2
嘗試:
(沒有工作)
#!bin/sh
a=echo '1+1' | bc -l
echo $a
您正在尋找稱爲命令替換的shell功能。
有2種形式CMD替代
原件,回到石器時代,但完全可移植的,並適用於所有的類Unix外殼(以及幾乎所有)。
你附上你的價值產生背蜱字符的內部命令,即
$ a=`echo 1+1 | bc -l`
$ echo $a
2
$
現代,少笨重的前瞻性,容易嵌套與$(cmd)
供應CMD-替代,即
$ a=$(echo 1+1 | bc -l)
$ echo $a
2
$
您的'she-bang'行說,#!/bin/sh
,所以如果您在真正的Unix平臺上運行,那麼很可能是您的/bin/sh
是原始的Bourne shell,並且將要求您使用上述選項1。
如果您嘗試選項2,同時仍然使用#!/bin/sh
,它可以工作,那麼你有現代的外殼。嘗試輸入echo ${.sh.version}
或/bin/sh -c --version
並查看您是否收到任何有用的信息。如果你得到一個版本號,那麼你會想知道新殼包含的額外功能。
說到的新功能,如果你真的使用bash,zsh中,ksh93的+,那麼你可以重寫你的示例代碼
a=$((1+1))
或者,如果你正在做更多的數學運算,將全部留在裏面範圍,你可以像使用殼特徵算術:
((b=1+1))
echo $b
2
在這兩種情況下,你能避免額外的進程創建的,但你不能這樣做浮點運算的殼(而你可以用bc
)。
很好的解釋。 Thx非常。工作正常! – GarouDan
[如何設置BASH變量等於命令的輸出?](http://stackoverflow.com/questions/4651437/how-to-set-a-bash-variable-equal-to - 從命令輸出) – Jahid