使用$()将多个命令输出到变量Bash脚本中

时间:2012-08-02 14:54:45

标签: linux bash shell

我查看了多个线程并且仍然有问题,这是我正在尝试执行的命令。没有$()的命令可以毫无问题地将所需的输出打印到控制台,我似乎无法将该值放入稍后要使用的变量中。

MODEL3= $(/usr/sbin/getSystemId | grep "Product Name" | awk '{print $4}')

MODEL3= /usr/sbin/getSystemId | grep "Product Name" | awk '{print $4}'  

- 将输出到控制台。 非常感谢!

2 个答案:

答案 0 :(得分:4)

这是正确的:

MODEL3=$(/usr/sbin/getSystemId | grep "Product Name" | awk '{print $4}')

但是你可以在没有grep的情况下编写相同内容:

MODEL3=$(/usr/sbin/getSystemId | awk '/Product Name/{print $4}')

现在您的结果位于MODEL3变量中,您可以将其作为$MODEL3进一步使用:

echo "$MODEL3"

答案 1 :(得分:2)

变量分配中的空格不合法

变量赋值在变量名,赋值运算符和值之间不能有空格。您当前的行说:

MODEL3= $(/usr/sbin/getSystemId | grep "Product Name" | awk '{print $4}')

这实际上意味着“使用空的环境变量运行以下表达式,其中MODEL3已设置但为空。”

你想要的是一个实际的任务:

MODEL3=$(/usr/sbin/getSystemId | grep "Product Name" | awk '{print $4}')