[bash] Bash에서 명령 줄 인수를 변경하는 방법은 무엇입니까?

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 = $1output_filename = $2또는 무언가)를 그 변수 중 하나를 (덮어 쓰기 input_filename = 'chintz'가 인 경우) 변경 스크립트에 입력을 떠나 다른 곳에 필요합니다.


답변