Bash 스크립트에서 명령 줄 인수를 변경하는 방법이 있습니까? 예를 들어 Bash 스크립트가 다음과 같은 방식으로 호출됩니다.
./foo arg1 arg2
스크립트 내에서 arg1의 값을 변경하는 방법이 있습니까? 다음과 같이 말하십시오.
$1="chintz"
답변
모든 인수를 재설정해야합니다. 예를 들어 변경하려면 $3
:
$ set -- "${@:1:2}" "new" "${@:4}"
기본적으로 변경하려는 인수를 제외한 모든 인수를 현재 값 으로 설정 합니다 . POSIX 7set --
에서도 지정 됩니다 .
"${@:1:2}"
표기법 (따라서 두 가지로 확장 2
표기에서)에서 시작 위치 인수 오프셋 1
(즉, $1
). "$1" "$2"
이 경우에 대한 속기 이지만 예를 들어 대체하려는 경우 훨씬 더 유용합니다 "${17}"
.
답변
가독성 및 유지 보수에 대한 최적화, 당신은 할당 나을 수 $1
와 $2
(나도 몰라,보다 의미있는 변수 input_filename = $1
및 output_filename = $2
또는 무언가)를 그 변수 중 하나를 (덮어 쓰기 input_filename = 'chintz'
가 인 경우) 변경 스크립트에 입력을 떠나 다른 곳에 필요합니다.