我如何可以使用循环

问题描述:

从文本文件作为参数线如果我有叫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。 –

第一解析参数,然后事后通过你的文件:

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