如何将输出赋给shellscript变量? [英] How to assign an output to a shellscript variable?
本文介绍了如何将输出赋给shellscript变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何将此结果赋给shell变量?
输入:
echo '1+1' | bc -l
输出:
2
尝试:
(不起作用)
#!bin/sh
a=echo '1+1' | bc -l
echo $a
推荐答案
您正在寻找称为命令替换的外壳程序功能。
cmd替换有两种形式
原始的,回到石器时代,但完全便携,并且在所有类Unix的shell(几乎所有)中都可用。
将值生成命令括在反勾号字符内,即
$ a=`echo 1+1 | bc -l` $ echo $a 2 $
随
$( cmd )
提供的现代化、外观不那么笨重、易于嵌套的命令替换,即$ a=$(echo 1+1 | bc -l) $ echo $a 2 $
您的"sher-bang"行显示#!/bin/sh
,因此如果您在真正的Unix平台上运行,则您的/bin/sh
很可能是原始的Bourne shell,并且将要求您使用上面的选项1。
#!/bin/sh
的同时尝试选项2,并且它可以工作,那么您就拥有了现代的shell。尝试键入echo ${.sh.version}
或/bin/sh -c --version
,看看是否获得任何有用的信息。如果您获得了版本号,那么您将希望了解较新的shell包含的额外功能。
说到新特性,如果您真的在使用bash、zsh、ksh93+,那么您可以将示例代码重写为
a=$(( 1+1 ))
或者,如果您要进行更多的数学运算,那么这些运算都会留在作用域内,您可以使用shell功能算法,如下所示:
(( b=1+1 ))
echo $b
2
在这两种情况下,您都可以避免创建额外的进程,但不能在shell中进行浮点运算(而可以使用bc
)。
这篇关于如何将输出赋给shellscript变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文