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 "