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 "