编辑mytest.sh的内容。
#!/bin/bash
ARGS=`getopt -o c`
eval set -- "${ARGS}"
while true;
do
case "$1" in
-c)
echo "i am c"
;;
*)
echo "Internal error!"
exit 1
;;
esac
done
bash mytest.sh -c
获取错误信息Internal error!
,为什么无法触发信息i am c
?
答案 0 :(得分:1)
#!/bin/bash
ARGS=$(getopt -o c -- "$@")
eval set -- "${ARGS}"
while true;
do
case "$1" in
-c)
echo "i am c"
;;
*)
echo "Internal error!"
exit 1
;;
esac
done
我真的不知道你打算做什么。但是你当前的代码导致无限循环。更好的方法是:在遇到选项后从while条件中断。
最有可能做得更好:
#!/bin/bash
ARGS=$(getopt -o c -- "$@")
eval set -- "${ARGS}"
while true;
do
case "$1" in
-c)
echo "i am c"
# do some processing.
break
;;
*)
echo "Internal error!"
exit 1
;;
esac
done
注意:顺便说一句,更喜欢使用getopts而不是getopt