I have this script:
nmapout=`sudo nmap -sP 10.0.0.0/24`
names=`echo "$nmapout" | grep "MAC" | grep -o '(.+)'`
echo "$names"
now the $names
variable contains strings delimited with newlines:
>_
(Netgear)
(Hon Hai Precision Ind. Co.)
(Apple)
I tried to do the array conversion with the sub-string approach:
names=(${names//\n/ })
echo "${names[@]}"
But the problem is that I can't access them by indexing (i.e., ${names[$i]
etc.), if I run this loop
for (( i=0; i<${#names[@]}; i++ ))
do
echo "$i: ${names[$i]"
# do some processing with ${names[$i]}
done
I get this output:
>_
0: (Netgear)
1: (Hon
2: Hai
but what I want is:
>_
0: (Netgear)
1: (Hon Hai Precision Ind. Co.)
2: (Apple)
I could not figure out a good way to do this, please note that the second string has spaces in it.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…