1

私は何を間違っていますか?

これは機能します:

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 コマンドを実行することを認識できるように、パイプの後に何か特別なことをする必要がありますか? バッククォート (歴史的) の使用も失敗します。

4

3 に答える 3

1

コマンドを変数に格納することはできません。コマンドの出力のみを格納します。3 行目は入力を指定していないのでgrep、標準入力から読み込みます。変数を削除して、digコマンドを次のように変更するだけです。

dig @$ns $d A | grep $d | grep -v "DiG"
于 2013-02-26T11:37:04.720 に答える
1

評価を使用する

ns="ns.nameserver.co.uk"
d="domain.co.uk"
g="grep $d | grep -v 'DiG'"
dig @$ns $d A | eval $g
于 2013-02-26T15:57:20.637 に答える
1

変数の代わりに関数を定義できます。

ns="ns.nameserver.co.uk"
d="domain.co.uk"
g () {
    grep "$1" | grep -v "DiG"
}
dig @$ns $d A | g "$d"
于 2013-02-26T13:55:11.703 に答える