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

Try*_*ain 5 variables bash 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 }'
Run Code Online (Sandbox Code Playgroud)

这很好地返回一个结果,如:

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命令之前添加许多小改动,没有引号,似乎没有任何效果.任何方向都非常感谢.

Wil*_*ell 7

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

  • 使用`$()`通常比反引号更受欢迎,因为反引号不会嵌套.反引号稍微便于携带,但是`$()`符号已经标准化了大约20年,并且大多数shell接受它. (4认同)