8

我有一个用于获取 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,不带引号,但似乎没有任何效果。我怎样才能解决这个问题?

4

2 回答 2

8
VAR=$( dig axfr @dc1.localdomain.com localdomain.com |
     grep -i Lawler |
     awk '{ getline ; $1=substr($1,1,length($1)-1); print $1 ; exit }' )
于 2013-03-06T19:25:29.200 回答
2

使用反引号而不是引号:

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

Backtics 实际上的意思是“运行此处的任何内容并返回标准输出作为表达式的值”,但引号不会这样做。

于 2013-03-06T19:23:57.120 回答