2017-07-24 67 views
1

從文本文件作爲參數線如果我有叫inventory.txt了一個文本文件看起來像這樣:我如何可以使用循環

america 
mexico 
england 

如果我運行這段代碼,它只能通過運行曾經爲america

while read line; 
    do 
     while getopts "U:D:" opt; 
     do 
      case $opt in 
       U) 
        SOURCE=$OPTARG 
        echo "SOURCE : $SOURCE"  
        SITEID=$line 
        echo "SITE : $SITEID " >&2 
        ;; 

       D) 
        DEST=$OPTARG 
        echo "DESTINATION : $DEST" >&2 
        ;; 
      esac 

     done 

done < inventory.txt 

我怎麼能在我的文本文件中的所有行做到這一點?

+0

你外環經過3次迭代運行。但內循環只在第一個循環中執行。 –

+0

似乎真的很奇怪,不止一次運行'getops'循環,但如果你真的想這樣做,你可以在外循環的頂部設置OPTIND = 1。 –

回答

1

第一解析參數,然後事後通過你的文件:

while getopts "U:D:" opt; 
do 
    case $opt in 
     U) 
      SOURCE=$OPTARG 
      ;; 

     D) 
      DEST=$OPTARG 
      ;; 
    esac 
done 


while read line; 
do 
    echo "SOURCE : $SOURCE"  
    SITEID=$line 
    echo "SITE : $SITEID " >&2 
    echo "DESTINATION : $DEST" >&2 
done < inventory.txt 
相關問題