如何将此结果分配给 shell 变量?
Input:
echo '1+1' | bc -l
Output:
2
Attempts:
(没用)
#!bin/sh
a=echo '1+1' | bc -l
echo $a
您正在寻找称为命令替换的 shell 功能。
cmd 替换有 2 种形式
-
原始的,可以追溯到石器时代,但是完全可移植并且可以在所有类 Unix shell 中使用(几乎所有)。
您可以将值生成命令括在反引号字符内,即
$ a=`echo 1+1 | bc -l`
$ echo $a
2
$
-
现代、不那么笨重、易于嵌套的 cmd 替换提供$( cmd )
, i.e.
$ 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}
or /bin/sh -c --version
看看你是否得到任何有用的信息。如果您获得版本号,那么您将想要了解较新 shell 包含的额外功能。
说到新功能,如果您确实使用 bash、zsh、ksh93+,那么您可以将示例代码重写为
a=$(( 1+1 ))
或者,如果您正在进行更多数学运算,这些运算都将保留在范围内,您可以使用 shell 特征算术,例如:
(( b=1+1 ))
echo $b
2
在任何一种情况下,您都可以避免额外的进程创建,但是您不能在 shell 中执行浮点运算(而您可以使用bc
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)