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하고 복원하는 것을 잊지 마십시오.

관련 정보