0

cli コマンドを使用して複数のリモート デバイスの出力をキャプチャしてから、grep 717GE を実行し、複数のホストの画面に出力しようとしています。以下に示すように、コマンドラインから同じコマンドを使用したときに表示されるものではなく、$hosts から IP を取得して $outip に渡します。変数は、指定されたコマンドから返されたデータをキャプチャすると思いました。誰かが私を助けて、私が間違っていることを理解するのを手伝ってくれますか? 私は学ぶことにとても興味があるので、皮肉なコメントは控えてください。もし可能なら。

for host in ${hosts[@]}; do
  seven=( $(cli $hosts show gpon ont summary -n --max=3 --host ) )
  outip=( $(grep 717GE $seven) )
  echo $outip
done

出力:

+ for host in '${hosts[@]}'
+ seven=($(cli $hosts show gpon ont summary -n --max=3 --host ))
++ cli 10.100.112.2 show gpon ont summary -n --max=3 --host
+ outip=($(grep 717GE $seven))
++ grep 717GE 10.100.112.2 grep: 10.100.112.2: No such file or directory
4

1 に答える 1

1

var=( .. )配列を作成したくない場合は使用しないでください。また、一致する行を検索するために bash here-string grep something <<< "$var"( と同等) を使用します (それ以外の場合は、検索するファイル名のリストと に設定するいくつかのオプションが含まれてecho "$var" | grep somethingいると言っています) 。 :$vargrep

for host in ${hosts[@]}; do
  # Assign as variable rather than array, and use $host instead of hosts
  seven=$(cli $host show gpon ont summary -n --max=3 --host )
  # Grep with "$seven" as text input and not as a list of filenames
  outip=$(grep 717GE <<< "$seven")
  echo "$outip"
done
于 2013-06-27T16:26:46.797 に答える