2013-04-18 83 views
0

我試圖讓用戶可以輸入一個「i」或「V」,並有不同的消息呼應簡單的UNIX case語句

這裏是我的代碼:

while getopts :iv opt 
do 
    case $opt in 
      i) interactive=true ;; 
      v) verbose=true ;; 
      \?) echo "$0: invalid option --'$OPTARG'" 
       exit ;; 
     esac 
done 
shift $(($OPTIND - 1)) 

所以遠遠有效,但我不確定如何在此循環之外調用它。

我應該使用if循環嗎?請幫忙!

+0

通過Unix你是指POSIX兼容sh? –

回答

0

確保您沒有繼承環境變量interactiveverbose,方法是將它們設置爲循環前的值。

interactive=false 
verbose=false 
while getopts :iv opt 
do ... 
done 

您顯示將認識的命令行選項-i-v或它們的組合,並相應地設置的變量的代碼。

然後,您可以使循環後的代碼根據$interactive$verbose的值做不同的事情。請注意,這些測試假定變量設置爲truefalse(字符串);如果變量爲空,它們將無法正常工作。

if [ $interactive = true ] 
then read line 
    ...process $line... 
fi 

if [ $verbose = true ] 
then echo "Talking more than usual..." 
fi 

等等

我不知道什麼是如何調用它這個循環之外「的意思。