getoptの解析

getoptの解析

SOMETEXTパラメータの最初の文字列をエスケープしたいですgetopts。ただし、最初の例でのみこれを実行できます。

2番目の例では、どのように機能させることができますか?

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 "

関連情報