如何将此结果分配给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