【发布时间】:2013-03-06 19:22:23
【问题描述】:
我有一个用于获取 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 命令之前添加$,不带引号,但似乎没有任何效果。我该如何解决这个问题?
【问题讨论】:
-
如果您的目标是存储命令以多次运行,请参阅mywiki.wooledge.org/BashFAQ/050(“我正在尝试将命令放入变量中,但复杂的情况总是失败!”) .如果您的目标只是存储输出,
var=$(command) -
仅供参考——您可以要求
dig提供更少的信息,以使输出更易于解析。参见例如+short选项。 -
@CharlesDuffy
awk '{ getline ; $1=substr($1,1,length($1)-1); print $1 ; exit }'满足我的需要,+short实际上不适用于我的情况,不知道为什么..可能是因为 OSX。不过感谢您的建议。 -
两个答案都按预期工作。有什么想法更容易受到未来复杂性的影响?我愿意接受提供最大灵活性的那个。谢谢