我正在尝试检查两个标志中是否存在其中一个。 -c
或-v
。
然而,在尝试运行以下时,我发现脚本退出而没有输出任何内容。
我已经看过在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
}
答案 0 :(得分:-1)
我删除了整个while循环,因为它没有用于任何目的。以下结束了工作:
##########################################################################################
# Check args passed to the script #
##########################################################################################
ACTION=$1;
#Check that the $ACTION variable is of the form “-[character]"
if [[ ! $ACTION =~ ^-. ]] ; then
printHelp;
exit 1;
fi
#Too many arguments passed
if [[ ${#ACTION} -gt 2 ]] ; then
printHelp;
exit 1;
fi
#Use cases for correct characters
case ${ACTION} in
(-v) echo "${bold}STARTING VOCAB TEST:${reset}"
;;
c) #phraseTest;
echo "${bold}STARTING PHRASE TEST:${reset}"
exit 0
;;
?) echo "";
printHelp
#exit 1
;;
esac