docase1(){
case "$1" in
-a )
echo "case a" ;;
-b )
echo "case b" ;;
-* )
echo "wrong input" ;;
esac
}
Мы можем сделать вывод, что -*
может соответствовать -+ символ (ы) вместо символа (ов).
docase1 -g
wrong input
docase1 -gg
wrong input
docase1 g
docase1 gg
Тот факт, что команды docase1 g
и docase1 gg
ничего не выводят, означает, что - * не может соответствовать ни g
ни gg
.
docase2(){
OPTS=$(getopt -o ab -- "$@");
if [ $? != 0 ] ; then
echo "wrong" ;
fi;
eval set -- "$OPTS";
while true; do
case "$1" in
-a )
echo "case a" ;
shift ;;
-b )
echo "case b";
shift ;;
-* )
echo "wrong input";
break;;
esac
done
}
Почему -*
в docase2 может соответствовать символ (ы)?
docase2 g
wrong input
docase2 gg
wrong input
Почему одно и то же выражение -*
приводит к различным эффектам?
-*
в docase1 не могут совпадать с g
и gg
, -*
в docase2 могут?