간단한 스크립트가 있으며 다음을 사용하여 스크립트를 실행합니다.
script.sh 123 456
스크립트 내용
FirstNum=$1
SecondNum=$2
스크립트에서 $1 및 $2를 사용하는 대신 실행 시 명령줄을 전달할 수 있나요?
script.sh FirstNum=123 SecondNum=456 (so that i dont want to call $1 , $2 inside the script)
$1과 $2를 사용하지 않고 명령줄을 통해 직접 값을 전달하는 방법이 있나요?
답변1
bash
셸 의 경우 getopts
이를 사용하여 명령줄 인수를 구문 분석해야 합니다.
~에서https://sookocheff.com/post/bash/parsing-bash-script-arguments-with-shopts/
쉘 스크립팅의 일반적인 작업은 스크립트의 명령줄 인수를 구문 분석하는 것입니다. Bash는 이를 수행하기 위해 getopts 내장 기능을 제공합니다. 이 튜토리얼에서는 getopts 내장 함수를 사용하여 bash 스크립트의 매개변수와 옵션을 구문 분석하는 방법을 보여줍니다.
예:
while getopts ":f:l:" opt; do
case ${opt} in
f )
firstnum=$OPTARG
l )
lastnum=$OPTARG
;;
\? )
echo "Invalid option: $OPTARG" 1>&2
;;
: )
echo "Invalid option: $OPTARG requires an argument" 1>&2
;;
esac
done
shift $((OPTIND -1))
간단한 char 매개변수를 사용하는 것이 좋습니다.
script.sh -f 123 -l 456
-f
처음은 어디에 있고 -l
마지막은 어디에 있습니까?