2016-08-16 5 views
0

Ich habe eine Listendatei, die Servernamen und IP-Adressen enthält. Wie würde ich jede Zeile lesen und sie in zwei Variablen aufteilen, die für andere Befehle verwendet werden?Bash-Skript: wie man zwei Variablen aus einer Zeichenkette macht?

Probe in MyList:

server01.mydomain.com 192.168.0.23 
server02.testdomain.com 192.168.0.52 

bestimmt Skript

#!/bin/bash 
MyList="/home/user/list" 
while read line 
do 
    echo $line #I see a print out of the hole line from the file 
    "how to make var1 ?" #want this to be the hostname 
    "how to make var2 ?" #want this to be the IP address 
    echo $var1 
    echo $var2 
done < $MyList 

Antwort

4

Geben Sie einfach mehrere Argumente zu read:

while read host ip 
do 
    echo $host 
    echo $ip 
done 

Wenn es ein drittes Feld ist wollen Sie nicht Lesen Sie in $ip, können Sie eine Dummy-Variable dafür erstellen:

while read host ip ignored 
do 
    # ... 
done 
+0

Monkey Wrench, was passiert, wenn es ein drittes Feld ist, das will ich nicht hinzugefügt var2? – cwheeler33

+0

Meine Antwort wurde aktualisiert. Dies ist übrigens alles in der Dokumentation, die ich verlinkt habe. –

+0

wirklich cool ... danke! – cwheeler33

0
#!/bin/bash 
#replacing spaces with comma. 
all_entries=`cat servers_list.txt | tr ' ' ','` 
for a_line in $all_entries 
    do 
     host=`echo $a_line | cut -f1 -d','` 
     ipad=`echo $a_line | cut -f2 -d','` 
     #for a third fild 
     #field_name=`echo $a_line | cut -f3 -d','` 
     echo $host 
     echo $ipad 
    done 
Verwandte Themen