1
我正在編寫一個shell腳本來解析選項。它正確地解析選項,但是當我省略任何輸入參數時,它不會從while循環中出來。 任何人都可以幫忙嗎?Getopt in shell
TEMP=`getopt -o ha:b:d:e:c: --l ca: \-n "$x" -- "[email protected]"`
eval set -- "$TEMP"
while true; do
case "$1" in
-h) print $USAGE
exit 0 ;;
-a) case "$2" in
-*|"") error "Option t, requires argument";
exit 1;;
*) print $2
T=${2^^} ;
shift 2 ;;
esac ;;
-b) case "$2" in
-*|"") error "Option p, requires argument";
exit 1 ;;
*) print $2
PE=${2^^} ;
shift 2 ;
esac ;;
-d) case "$2" in
-*|"") error "Option f, requires argument";
exit 1 ;;
*) print $2 ;
IN=$2 ;
shift 2 ;;
esac ;;
-e) case "$2" in
""|-*) error "Option e, requires argument";
exit 1 ;;
*) print $2 ;
KEY=$2 ;
shift 2 ;;
esac ;;
-c|--ca) case "$2" in
""|-*) error "Option c, requires argument";
exit 1;;
*) print $2 ;
C=${2};
shift 2 ;;
esac ;;
--) shift ;
break ;;
*) error "Invalid Input!" ;
exit 1 ;;
esac
done
USAGE:foo.sh -a arg1 -b arg2 -c arg3 -d arg 4 -e arg5
這工作得很好,但
foo.sh -a arg1 -b arg2 -c arg3
不來while循環了。
This works。但是我所有的輸入參數都是'arg1'而不是arg1。任何解決方案? – user1558886
道歉:我錯過了'set'前面的'eval'。我已經更新了包含它的答案。 –
非常感謝... – user1558886