我试图检查两个标志之一是否存在。 -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'这是一个有效的参数 –