挖掘域名服务器域名$ variable不起作用

时间:2013-02-26 11:32:45

标签: bash variables parentheses dollar-sign dig

我做错了什么?

这有效:

ns="ns.nameserver.co.uk"
d="domain.co.uk"
dig @$ns $d A | grep $d

但是在管道之后只使用一个变量(它挂起):

ns="ns.nameserver.co.uk"
d="domain.co.uk"
g=$(grep $d | grep -v "DiG")
dig @$ns $d A | $g

我需要在管道后做一些特殊的事情,以便它知道从g变量运行grep命令吗?使用反引号(历史性)也失败了。

3 个答案:

答案 0 :(得分:1)

您不能将命令存储在变量中,只能存储命令的输出。由于您未在第三行指定grep的任何输入,因此它将从标准输入读取。您只需删除变量并将dig命令更改为以下

即可
dig @$ns $d A | grep $d | grep -v "DiG"

答案 1 :(得分:1)

您可以定义函数而不是变量。

ns="ns.nameserver.co.uk"
d="domain.co.uk"
g () {
    grep "$1" | grep -v "DiG"
}
dig @$ns $d A | g "$d"

答案 2 :(得分:1)

使用eval

ns="ns.nameserver.co.uk"
d="domain.co.uk"
g="grep $d | grep -v 'DiG'"
dig @$ns $d A | eval $g