programing

Bash에서 명령줄 인수를 변경하려면 어떻게 해야 합니까?

linuxpc 2023. 4. 11. 21:46
반응형

Bash에서 명령줄 인수를 변경하려면 어떻게 해야 합니까?

Bash 스크립트에서 명령줄 인수를 변경하는 방법이 있습니까?예를 들어 Bash 스크립트는 다음과 같이 호출됩니다.

./foo arg1 arg2  

스크립트 내에서 arg1의 값을 변경할 수 있는 방법이 있습니까?예를 들어 다음과 같습니다.

$1="chintz"

모든 인수를 리셋해야 합니다.예를 들어, 변경하다 $3:

$ set -- "${@:1:2}" "new" "${@:4}"

기본적으로 변경할 인수를 제외한 모든 인수를 현재 값으로 설정합니다. set --POSIX 7에서도 지정됩니다.

표기법이 2개로 확장됩니다(따라서2표기법에서) 오프셋에서 시작하는 위치 인수1(즉,$1)의 줄임말입니다."$1" "$2"이 경우는, 예를 들면, 교환하고 싶은 경우에 훨씬 편리합니다. "${17}".

가독성과 유지보수를 최적화하기 위해 할당하는 것이 좋을 수 있습니다.$1그리고.$2더 의미 있는 변수들(모르겠는데,input_filename = $1그리고.output_filename = $2그 후 변수 중 하나를 덮어씁니다.input_filename = 'chintz'스크립트 입력은 다른 곳에서 필요할 경우에 대비하여 변경하지 않고 그대로 둡니다.

오래된 질문인 것은 알지만 thkala의 답변이 매우 도움이 된다는 것을 알게 되었습니다.그래서 저는 아이디어를 사용하여 정의되지 않은 인수에 기본값을 추가할 수 있도록 약간 확장했습니다.예를 들어 다음과 같습니다.


    # set defaults for the passed arguments (if any) if not defined.
    #
    arg1=${1:-"default-for-arg-1"}
    arg2=${2:-"default-for-arg-2"}
    set -- "${arg1}" "${arg2}"
    unset arg1 arg2

이게 다른 사람에게 도움이 됐으면 좋겠어요.

언급URL : https://stackoverflow.com/questions/4827690/how-to-change-a-command-line-argument-in-bash

반응형