解析 getopt

解析 getopt

我想转义参数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 "

相关内容