我做错了什么?
这有效:
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命令吗?使用反引号(历史性)也失败了。
答案 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