bash script use cut command at variable and store result at another variable

后端 未结 2 1465
栀梦
栀梦 2020-12-13 19:36

I have a config.txt file with IP addresses as content like this

10.10.10.1:80
10.10.10.13:8080
10.10.10.11:443
10.10.10.12:80

I wa

相关标签:
2条回答
  • 2020-12-13 19:55

    You can avoid the loop and cut etc by using:

    awk -F ':' '{system("ping " $1);}' config.txt
    

    However it would be better if you post a snippet of your config.txt

    0 讨论(0)
  • 2020-12-13 20:06

    The awk solution is what I would use, but if you want to understand your problems with bash, here is a revised version of your script.

    #!/bin/bash -vx
    
    ##config file with ip addresses like 10.10.10.1:80
    file=config.txt
    
    while read line ; do
      ##this line is not correct, should strip :port and store to ip var
      ip=$( echo "$line" |cut -d\: -f1 )
      ping $ip
    done < ${file}
    

    You could write your top line as

    for line in $(cat $file) ; do ...
    

    (but not recommended).

    You needed command substitution $( ... ) to get the value assigned to $ip

    reading lines from a file is usually considered more efficient with the while read line ... done < ${file} pattern.

    I hope this helps.

    0 讨论(0)
提交回复
热议问题