这是我的test.sh
:
#!/usr/bin/env bash
arg="default"
TEMP=$(getopt --long been: -n 'test.sh' -- "$@")
eval set -- "$TEMP"
while true ; do
case "$1" in
--been)
echo 'in been option'
arg="$2"
shift;;
--)
echo 'in the end'
shift ; break ;;
esac
done
echo "$arg"
为 分配值arg
:
bash ./test.sh --been=xxyyzz
in the end
default
为什么得不到结果>?
bash ./test.sh --been=xxxx
in been option
xxxx
getopt(1)
手册页在BUGS 部分提到,所以你需要
(如果您想在参数
--
中包含它getopt
,它需要放在那个空参数之前)随着这一变化,
(您还需要
break
在--been
case
部分中使用,并使用shift 2
来摆脱论点)