如何使用反引号管道命令运行?

时间:2014-04-14 14:06:32

标签: bash pipe

我有一个bash命令,

a=`xyz | head -n 1 | awk '{print $2}'`

用于获取版本号

我多次使用它,为了避免冗余,我决定将它存储为字符串并在需要时执行它,但现在只有xyz的stdout存储到变量中。

我正是这样做的,

cmd="xyz | head -n 1 | awk '{print \$2}'"
a=`$cmd`

我做错了什么?怎么解决?还建议是否有更简单/更好的方法来实现它。

2 个答案:

答案 0 :(得分:4)

  

建议是否有更简单/更好的方法来实现它。

您可以将命令缩短为:

xyz | awk '{print $2; exit}'

您可以为此创建一个函数,而不是存储在字符串中:

mycmd() {
    xyz | awk '{print $2; exit}'
}

并将其用作:

a=$(mycmd)

答案 1 :(得分:1)

似乎您只需要命令xyz输出第一行的第二个字段,并将其存储在变量a中。那么为什么不直接使用Bash呢?

read _ a _ < <(xyz)