cwheeler33
cwheeler33

Reputation: 115

Bash script: how to make two variables from a string?

I have a list file that contains server names and IP addresses. How would I go about reading each line, and separating it into two variables that will be used to complete other commands?

Sample in MyList:

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

intended script

#!/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

Upvotes: 0

Views: 67

Answers (2)

Xenwar
Xenwar

Reputation: 192

#!/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

Upvotes: 0

Sean Bright
Sean Bright

Reputation: 120644

Just pass multiple arguments to read:

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

If there is a third field you don't want to read into $ip, you can create a dummy variable for that:

while read host ip ignored
do
    # ...
done

Upvotes: 4

Related Questions