如何将该结果分配给shell变量?
输入:
echo '1+1' | bc -l
输出:
2
尝试:
(没有成功)
#!bin/sh
a=echo '1+1' | bc -l
echo $a
$ a=`echo 1+1 | bc -l`
$ echo $a
2
$
现代化、外观更简洁、容易嵌套的命令替换方式为$( cmd )
,即:
$ a=$(echo 1+1 | bc -l)
$ echo $a
2
$
你的“she-bang”行是#!/bin/sh
,所以如果你在真正的Unix平台上运行,那么你的/bin/sh
很可能是最初的Bourne shell,并且需要使用上面的选项1。
如果你尝试使用选项2,同时仍然使用#!/bin/sh
并且它能工作,那么你有现代shell。尝试输入echo ${.sh.version}
或/bin/sh -c --version
,看看是否有有用的信息。如果你得到一个版本号,那么你需要学习一下新版shell所包含的额外功能。
说到新功能,如果你真的在使用bash、zsh、ksh93+,那么你可以将示例代码重写为:
a=$(( 1+1 ))
如果你要进行更多的数学运算,那么所有的内容都将保留在作用域内,你可以使用shell特性中的算术运算符,例如:
或者如果你正在做更多的数学运算,那么所有的内容都将保留在作用域内,你可以使用 shell 特性中的算术运算符,如下例:
(( b=1+1 ))
echo $b
2
无论哪种情况,您都可以避免额外的进程创建,但是您无法在shell中进行浮点运算(而您可以使用 bc 进行浮点运算)。