我試圖檢查兩個標誌之一是否存在。 -c
或-v
。使用getopts的Bash不會返回預期的回顯值
但是,在嘗試運行下面的代碼時,我發現腳本退出時沒有輸出任何內容。
我看過在while getopts 「:v:」 opts; do
聲明中更改冒號的位置,這看起來沒有任何改變。
任何想法?
#Check that the $ACTION variable is of the form 「-[character]"
if [[ ! $ACTION =~ ^-. ]] ; then
echo "2";
printHelp;
exit 1;
fi
#Too many arguments passed
if [[ ${#ACTION} -gt 2 ]] ; then
echo "3";
printHelp;
exit 1;
fi
#Use cases for correct characters
while getopts 「:v:」 opts; do
echo "4";
case $opts in
v) echo "1234" #vocabTest;
echo "${bold}STARTING VOCAB TEST:${reset}"
break
;;
c) #phraseTest;
echo "${bold}STARTING PHRASE TEST:${reset}"
exit 0
;;
?) echo "";
printHelp
exit 1
;;
esac
done
}
刪除最後一個':'。你的例子中的引號是奇怪的引號,不會在bash腳本中正確讀取,使用正常的引號如''''不''' – 2015-04-07 12:07:36
如果您期望,您還需要''getopts' arg字符串中的'c'這是一個有效的參數 –