Bash 명령줄 실행을 통해 변수 이름을 매개변수 값으로 읽을 수 있나요?

Bash 명령줄 실행을 통해 변수 이름을 매개변수 값으로 읽을 수 있나요?

간단한 스크립트가 있으며 다음을 사용하여 스크립트를 실행합니다.

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마지막은 어디에 있습니까?

관련 정보