grep は配列のいくつかの要素を探します。

grep は配列のいくつかの要素を探します。

以下を実行するdd移行スクリプトを作成しようとしています。

  1. ユーザー入力(最大4つ)を「array」という配列に読み込みます。ユーザーは、移行する論理ボリュームの名前を入力します。
  2. 配列の各要素を保存したら、次を実行します。

/sbin/lvscan | grep -E '"array[0]"|"array[1]"|"array[2]"|"array[3]"’

  1. 複数のSSH接続が行われ、各論理ボリュームはddを介してユーザーがIPを入力し、変数に格納されている特定のホストに移行されます。

私は現在以下を持っています:

#!/bin/bash

 echo "Enter upto 4 SRVID's seperated by a space"


 while read SRVIDS 
 do


        [ "$SRVIDS" == "done" ] && break
        array=("${array[@]}" $SRVIDS)

 done



 /sbin/lvscan | grep -E '"array[0]"|"array[1]"|"array[2]"|"array[3]"' 2&>1

私は何が間違っていましたか?論理ボリュームパスを取得するためにgrepを行うことはできません。

答え1

すべての配列要素をリストする必要はありません。

IFS="|"
grep -E "${array[*]}"

古いものを保存しIFSて復元することを忘れないでください。

関連情報