这是我的shell脚本 -
if ! options=$(getopt -o : -l along:,blong:,clong: -- "$@")
then
# something went wrong, getopt will put out an error message for us
exit 1
fi
set -- $options
while [ $# -gt 0 ]
do
case $1 in
--along) echo "--along selected :: $2" ;;
--blong) echo "--blong selected :: $2" ;;
--clong) echo "--clong selected :: $2" ;;
esac
shift
done
当我运行脚本时,我得到以下输出 -
./test.sh --along hi --blong hello --clong bye
--along selected :: 'hi'
--blong selected :: 'hello'
--clong selected :: 'bye'
问题是我不想用单引号显示参数('hi','hello','bye')。我该怎么做才能摆脱这些报价?
答案 0 :(得分:3)
使用选项-u
或--unquoted
进行getopt,即
if ! options=$(getopt -u -o : -l along:,blong:,clong: -- "$@")
getopt的联机帮助页说明-u
:
不要引用输出。注意空格和特殊 (依赖于shell)字符会在这种模式下造成破坏(就像它们一样) 做其他getopt(1)实现。