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然后恢复它......

相关内容