如何将此结果分配给shell变量?
输入:
echo '1+1' | bc -l
输出:
2
尝试:
(没用)
#!bin/sh
a=echo '1+1' | bc -l
echo $a
Run Code Online (Sandbox Code Playgroud)
she*_*ter 43
您正在寻找名为command-substitution的shell功能.
有两种形式的cmd替换
原创,回到石器时代,但完全便携,可用于所有类似Unix的外壳(几乎所有).
您将值生成命令包含在反向标记字符内,即
$ a=`echo 1+1 | bc -l`
$ echo $a
2
$
Run Code Online (Sandbox Code Playgroud)现代的,不那么笨重的外观,易于嵌套的cmd替代$( cmd ),即
$ a=$(echo 1+1 | bc -l)
$ echo $a
2
$
Run Code Online (Sandbox Code Playgroud)你的'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 ))
Run Code Online (Sandbox Code Playgroud)
或者,如果您正在进行更多数学运算,那将全部保留在范围内,您可以使用shell特征算法,如:
(( b=1+1 ))
echo $b
2
Run Code Online (Sandbox Code Playgroud)
在任何一种情况下,您都可以避免额外的进程创建,但是您不能在shell中进行浮点运算(而您可以使用bc).
| 归档时间: |
|
| 查看次数: |
77985 次 |
| 最近记录: |