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

これが実行されると、:when needed の後にあるものは取得されず、代わりにそれが作成され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 に答える