![grep 查找数组的多个元素](https://linux22.com/image/143065/grep%20%E6%9F%A5%E6%89%BE%E6%95%B0%E7%BB%84%E7%9A%84%E5%A4%9A%E4%B8%AA%E5%85%83%E7%B4%A0.png)
我正在尝试编写一个 dd 迁移脚本,该脚本将执行以下操作:
- 将用户输入(最大 4 个)读入名为“array”的数组。用户将输入要迁移的逻辑卷名称。
- 将每个元素存储在数组中后,运行:
/sbin/lvscan | grep -E '"array[0]"|"array[1]"|"array[2]"|"array[3]"’
- 产生多个 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
然后恢复它......