0

好的,所以我有一个地址列表,接下来是一个端口号。问题是这并不总是正确的。例如我有这个列表:

www.google.com:80
www.gmail.com:8080
www.yahoo.com
www.msn.com:443
www.amazon.com
www.apple.com
www.hotmail.com

我想要做的是逐行浏览包含此列表的文本文件并删除地址,如果之后有端口号,.com然后删除该端口号并将其存储在变量中。这是我尝试过的:

for each in `cat address.txt`; do
    f_address=$each
    f_port=`echo $each | cut -d":" -f2`

    if [[ "$f_address" == *:* ]]; then
        address=`echo $f_address | cut -d":" -f1`
    else
        address=$f_address
    fi

    if [ "$f_port" = "*" ]; then
        port=$f_port
    else
        port="443"
    fi

当它运行时,它不会:在需要的时候使用它,而只是让它443

4

1 回答 1

4

从这个开始:

while IFS=: read host port; do
   : ${port:=443}  # assign default value
   echo host=$host
   echo port=$port
done < address.txt
于 2012-07-24T15:32:26.780 回答