我想转义参数SOMETEXT
中的第一个字符串getopts
。但我只能在第一个例子中做到这一点。
我怎样才能让它在第二个例子中工作?
while getopts p: opt
do
case $opt in
p) result=$OPTARG;;
esac
done
echo "The result is $result "
示例1:
run_test.ksh -p3 SOMETEXT
The result is 3
示例2:
run_test.ksh SOMETEXT -p3
./run_test.ksh: line 10: result: parameter not set
答案1
这是使用的结果getopts
。参数及其参数必须位于任何其他文本之前。
如果您知道第一个单词是,SOMETEXT
则可以将其从处理的参数列表中删除getopts
:
if [[ 'SOMETEXT' == "$1" ]]
then
echo "Found SOMETEXT at the beginning of the line"
shift
fi
while getopts p: opt
do
case $opt in
p) result=$OPTARG;;
esac
done
echo "The result is $result "