您好我有一个基本问题,但我无法找到一个好的答案
我有这个代码:
while getopts :weco:r:u:hP: ARG; do
case $ARG in
.
.
.
h) #set option "h" - show help;
help
;;
P) #set option "P" - select Printer;
PRINTER=$OPTARG
;;
\?) #unrecognized option - show help
echo -e \\n"Option not recognized."
help
;;
esac
done
现在我想要使用“-P”两次,如果你使用“-P PRINTER”它使用给定的打印机,但如果你只使用“-P”它使用从文件中读出的默认值。
我能这样管理吗?对不起,如果这是正确的答案,我现在无法测试。
while getopts :weco:r:u:hP:P ARG; do
case $ARG in
.
.
.
h) #set option "h" - show help;
help
;;
P) #set option to use default
PRINTER=BLAFOO
P) #set option "P" - select Printer;
PRINTER=$OPTARG
;;
\?) #unrecognized option - show help
echo -e \\n"Option not recognized."
help
;;
esac
done
答案 0 :(得分:0)
我建议你重新编写自己的参数解析器,因为getopts
不支持你想要的。
while true; do
case $1 in
-h) #set option "h" - show help;
echo help
shift
;;
-P) #set option "P" - select Printer;
shift
case $1 in
""|-*)
PRINTER=BLAFOO
;;
*)
PRINTER=$1
shift
;;
esac
# echo PRINTER=$PRINTER
;;
-*|*) #unrecognized option - show help
echo -e \\n"Option not recognized."
echo help
break ;;
esac
done