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 "

관련 정보