Bash变量来自带有管道,引号等的命令

时间:2013-03-06 19:22:23

标签: bash variables pipe

我有一个命令,我用来获取hostname.localdomain

dig axfr @dc1.localdomain.com localdomain.com | grep -i Lawler | awk '{ getline ; $1=substr($1,1,length($1)-1); print $1 ; exit }'

这很好地返回了如下结果:

  

michael.lawler.localdomain.com

我想进一步将该结果用作bash脚本中的变量。

我似乎无法越过第一根烟斗。

如果我VAR="dig axfr @dc1.localdomain.com localdomain.com | grep -i Lawler | awk '{ getline ; $1=substr($1,1,length($1)-1); print $1 ; exit }'"

...我回来了整个区域转移。我还尝试了在$命令之前添加dig的许多小改动,没有引号,似乎没有任何效果。任何方向都非常感谢。

2 个答案:

答案 0 :(得分:7)

VAR=$( dig axfr @dc1.localdomain.com localdomain.com |
     grep -i Lawler |
     awk '{ getline ; $1=substr($1,1,length($1)-1); print $1 ; exit }' )

答案 1 :(得分:2)

使用背景而不是引号:

VAR=`dig axfr @dc1.localdomain.com localdomain.com | grep -i Lawler | awk '{ getline ; $1=substr($1,1,length($1)-1); print $1 ; exit }'`

背景实际上意味着“运行此处的任何内容并将标准输出作为表达式的值”,但引号不会这样做。