【发布时间】:2015-09-05 10:16:27
【问题描述】:
我想将选项作为参数传递。例如:
mycommand -a 1 -t '-q -w 111'
脚本无法识别引号中的字符串。即它只获取字符串的一部分。
getopts 的工作原理相同 - 它只能看到 -q。
对于自定义 getopts,我使用类似的脚本(示例):
while :
do
case $1 in
-h | --help | -\?)
# Show some help
;;
-p | --project)
PROJECT="$2"
shift 2
;;
-*)
printf >&2 'WARN: Unknown option (ignored): %s\n' "$1"
shift
;;
*) # no more options. Stop while loop
break
;;
--) # End of all options
echo "End of all options"
shift
break
;;
esac
done
【问题讨论】:
-
您希望脚本如何使用
'-q -w 111'?和不引用一样吗? -
我使用调用另一个脚本。
anotherscript $customOptions -
getopts解析部分中没有-t...? -
@chepner 你可以在开始时使用
set - $@ -
你真的不想使用未引用的
$@;您会丢失有关哪些参数可能包含空格的信息。