grep for multiple elements of an array
Clash Royale CLAN TAG#URR8PPP
up vote
0
down vote
favorite
I am trying to write a dd migration script that will do the following:
- read user input (max=4) into an array, called "array". the user will enter the logical volume names to be migrated.
- once each element is stored on an array, run:
/sbin/lvscan | grep -E '"array[0]"|"array[1]"|"array[2]"|"array[3]"’
- spawn multiple ssh connections to migrate each logical volume via dd to a specific host, the IP of which is also entered by user and stored in a variable.
I currently have:
#!/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
What am I doing wrong? I am unable to get grep for the logical volume paths.
shell-script dd array
add a comment |
up vote
0
down vote
favorite
I am trying to write a dd migration script that will do the following:
- read user input (max=4) into an array, called "array". the user will enter the logical volume names to be migrated.
- once each element is stored on an array, run:
/sbin/lvscan | grep -E '"array[0]"|"array[1]"|"array[2]"|"array[3]"’
- spawn multiple ssh connections to migrate each logical volume via dd to a specific host, the IP of which is also entered by user and stored in a variable.
I currently have:
#!/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
What am I doing wrong? I am unable to get grep for the logical volume paths.
shell-script dd array
1
Variables/arays names are not expanded under single quotes, you need to remove them. Also add$
in front of their names.
– jimmij
Dec 4 at 5:14
Getting the volume names on the command line would make the script more flexible.
– Kusalananda
Dec 4 at 11:39
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I am trying to write a dd migration script that will do the following:
- read user input (max=4) into an array, called "array". the user will enter the logical volume names to be migrated.
- once each element is stored on an array, run:
/sbin/lvscan | grep -E '"array[0]"|"array[1]"|"array[2]"|"array[3]"’
- spawn multiple ssh connections to migrate each logical volume via dd to a specific host, the IP of which is also entered by user and stored in a variable.
I currently have:
#!/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
What am I doing wrong? I am unable to get grep for the logical volume paths.
shell-script dd array
I am trying to write a dd migration script that will do the following:
- read user input (max=4) into an array, called "array". the user will enter the logical volume names to be migrated.
- once each element is stored on an array, run:
/sbin/lvscan | grep -E '"array[0]"|"array[1]"|"array[2]"|"array[3]"’
- spawn multiple ssh connections to migrate each logical volume via dd to a specific host, the IP of which is also entered by user and stored in a variable.
I currently have:
#!/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
What am I doing wrong? I am unable to get grep for the logical volume paths.
shell-script dd array
shell-script dd array
edited Dec 4 at 3:02
Peschke
2,400924
2,400924
asked Dec 4 at 2:07
Ertugrul Dur
63
63
1
Variables/arays names are not expanded under single quotes, you need to remove them. Also add$
in front of their names.
– jimmij
Dec 4 at 5:14
Getting the volume names on the command line would make the script more flexible.
– Kusalananda
Dec 4 at 11:39
add a comment |
1
Variables/arays names are not expanded under single quotes, you need to remove them. Also add$
in front of their names.
– jimmij
Dec 4 at 5:14
Getting the volume names on the command line would make the script more flexible.
– Kusalananda
Dec 4 at 11:39
1
1
Variables/arays names are not expanded under single quotes, you need to remove them. Also add
$
in front of their names.– jimmij
Dec 4 at 5:14
Variables/arays names are not expanded under single quotes, you need to remove them. Also add
$
in front of their names.– jimmij
Dec 4 at 5:14
Getting the volume names on the command line would make the script more flexible.
– Kusalananda
Dec 4 at 11:39
Getting the volume names on the command line would make the script more flexible.
– Kusalananda
Dec 4 at 11:39
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
No need to list ALL the array elements; try:
IFS="|"
grep -E "$array[*]"
Don't forget to save old IFS
and then restore it...
... or do it in a subshell.
– Kusalananda
Dec 4 at 12:33
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
No need to list ALL the array elements; try:
IFS="|"
grep -E "$array[*]"
Don't forget to save old IFS
and then restore it...
... or do it in a subshell.
– Kusalananda
Dec 4 at 12:33
add a comment |
up vote
1
down vote
No need to list ALL the array elements; try:
IFS="|"
grep -E "$array[*]"
Don't forget to save old IFS
and then restore it...
... or do it in a subshell.
– Kusalananda
Dec 4 at 12:33
add a comment |
up vote
1
down vote
up vote
1
down vote
No need to list ALL the array elements; try:
IFS="|"
grep -E "$array[*]"
Don't forget to save old IFS
and then restore it...
No need to list ALL the array elements; try:
IFS="|"
grep -E "$array[*]"
Don't forget to save old IFS
and then restore it...
answered Dec 4 at 11:35
RudiC
3,8381312
3,8381312
... or do it in a subshell.
– Kusalananda
Dec 4 at 12:33
add a comment |
... or do it in a subshell.
– Kusalananda
Dec 4 at 12:33
... or do it in a subshell.
– Kusalananda
Dec 4 at 12:33
... or do it in a subshell.
– Kusalananda
Dec 4 at 12:33
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f485801%2fgrep-for-multiple-elements-of-an-array%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Variables/arays names are not expanded under single quotes, you need to remove them. Also add
$
in front of their names.– jimmij
Dec 4 at 5:14
Getting the volume names on the command line would make the script more flexible.
– Kusalananda
Dec 4 at 11:39