我试图将一个论点作为"逐字传递"对于我的脚本,问题是内部双引号""
中的参数以双短划线/双连字符--
开头。
这是一个例子
script.sh -f "--conf=bla"
在我的脚本中,$*
和$@
都将此转换为
-f --conf=bla
当此事件到达getopts
时,无法按照应有的方式解码此信息。
这就是我的getopts
foo()
{
while getopts ":f:" vars
do
case ${vars} in
f ) MYVAR=${OPTARG};;
* ) Err; exit 1;;
esac
done
shift $((OPTIND-1))
}
我想将--conf=bla
存储在MYVAR
内,我无法找到方法来执行此操作,显然我无法控制双引号被删除的方式一般来说,我无法将文字逐字传递到我的剧本中。
我如何控制这个?
答案 0 :(得分:1)
$ cat t.sh
#!/bin/sh
foo()
{
# unset OPTIND
while getopts ":f:" vars
do
case ${vars} in
f) MYVAR=${OPTARG} ;;
*) echo "error"; exit 1 ;;
esac
done
shift $((OPTIND-1))
echo "\$MYVAR=[${MYVAR}]"
}
foo "$@"
$ ./t.sh -f "--conf=blah"
$MYVAR=[--conf=blah]
请详细说明?