2011-01-28 9 views
62

Bash 스크립트에서 명령 행 인수를 변경하는 방법이 있습니까?Bash에서 명령 행 인수 변경

./foo arg1 arg2 

스크립트 내에서 ARG1의 값을 변경할 수있는 방법이 있나요 : 예를 들어, 배쉬 스크립트는 다음과 같은 방법을 호출라고? 다음과 같이 말하십시오.

$1="chintz" 

답변

95

모든 인수를 재설정해야합니다. 예 : $3 :

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

기본적으로 당신을 변경하려는 하나 (들)을 제외하고 현재 값에 set모든 인수.

"${@:1:2}" notation1 오프셋에서 시작 (따라서 표기법 2) 두 위치 인수 (즉 $1)로 확장된다. 이 경우 "$1" "$2"의 줄임말이지만, 예를 들어를 바꿀 때 훨씬 더 유용합니다. "${17}".

+1

$ 3을 변경하려면 $ 1과 $ 2도 변경해야합니다. 그렇습니까? 그리고 그걸 뭐로 바꾸어? '재설정'의 의미는 무엇입니까? – Sriram

+2

'$ 1'과'$ 2'에는 물론입니다. –

+0

+1 : 아주 멋집니다! – Johnsyweb

17

당신이 경우에 변경되지 않은 스크립트에 입력을 떠나, (나는, input_filename = $1output_filename = $2 또는 무언가를 모르는)보다 의미있는 변수로 $1$2을 할당하고 해당 변수 (input_filename = 'chintz') 중 하나를 덮어 쓰는 것이 더 낫다 그것은 다른 곳에서 필요합니다.

+0

입력 인수 자체를 변경할 수있는 접근 방식이 필요했습니다. 스크립트에서 값을 반환하고 싶었 기 때문에 그렇게해야했습니다. thkala가 제안한 대답은 잘 돌아갔습니다. 응답 주셔서 감사합니다! – Sriram

+3

@Johnsyweb Agreed. 가독성을 위해 귀하가 더 나은 방법입니다. – Dss