如何将此结果分配给一个
shell变量?
@H_502_1@输入:
@H_502_1@echo’1 1’| bc -l
@H_502_1@输出:
@H_502_1@2
@H_502_1@尝试:
@H_502_1@(没有工作)
#!bin/sh a=echo '1+1' | bc -l echo $a
您正在寻找称为命令替换的shell功能.
@H_502_1@有两种形式的cmd替换
@H_502_1@>原来,回到石器时代,但完全可移植,并且在所有类似Unix的外壳(几乎全部)中可用.
@H_502_1@你的价值生成命令在后面的ticks字符内,即
$a=`echo 1+1 | bc -l` $echo $a 2 $@H_502_1@>现代的,较不笨重的外观,容易嵌套的cmd替换,$(cmd),即
$a=$(echo 1+1 | bc -l) $echo $a 2 $@H_502_1@你的“砰”行表示#!/ bin / sh,所以如果你在一个真正的Unix平台上运行,那么很可能你的/ bin / sh是原来的Bourne shell,并且要求你使用选项1以上. @H_502_1@如果您尝试使用选项2,同时仍然使用#!/ bin / sh并且它工作,那么你有现代的shell.尝试输入echo ${.sh.version}或/ bin / sh -c -version,看看是否有任何有用的信息.如果您获得版本号,那么您将需要了解更新的shell包含的额外功能. @H_502_1@说到更新的功能,如果你真的使用bash,zsh,ksh93,那么你可以重写你的示例代码
a=$(( 1+1 ))@H_502_1@或者如果您正在进行更多的数学运算,那么将保留在范围内,您可以使用shell特征算术,如:
(( b=1+1 )) echo $b 2@H_502_1@在任何一种情况下,您都可以避免额外的进程创建,但是您不能在shell中执行浮点算术(而可以使用bc).