환경 변수를 통해 지역 변수를 재정의하는 방법

환경 변수를 통해 지역 변수를 재정의하는 방법

값이 할당된 프로덕션 환경에서 스크립트를 실행하고 있지만 여기와 다른 값을 사용하고 싶습니다.

myscript.sh

a=20181214

....

export a=20181212나는 이 스크립트를 사용 하고 싶기 때문에 이 스크립트를 호출한 다음 이 스크립트를 호출합니다 20181212. 그러나 값을 선택할 때마다 20181214.

답변1

스크립트를 수정할 수 있는 경우 표시되도록 수정하세요.

a=${a:-20181214}

이렇게 하면 이전에 설정된 값을 사용하게 됩니다 a. 또는 비어 있거나 변수가 설정되지 않은 20181214경우입니다 . $a이것은표준 매개변수 확장.

그런 다음 사용할 수 있습니다

export a=20181212
./script.sh

또는

a=20181212 ./script.sh

후자는 호출 환경에서 변수를 설정하지 않고 스크립팅 환경에 대해서만 설정합니다.

만약 너라면할 수 없다a무엇을 하든 스크립트가 항상 값을 덮어쓰도록 스크립트를 수정하세요 . 이 경우, 스크립트를 관리하는 사람에게 연락하여 상황을 설명해주세요. 최악의 상황이 발생하면 사용 중인 스크립트의 복사본을 사용하세요.할 수 있는스크립트가 특정 위치에 있기를 원하지 않는다고 가정하여 편집하십시오.

답변2

스크립트는 다른 쉘에서 실행됩니다. 이 명령은 export A현재 쉘에 대한 변수만 설정합니다. 스크립트 상단에서 변수를 내보낼 수 있으며 나머지 환경에는 영향을 미치지 않습니다. 예를 들어

~$ export A=a
~$ echo $A
a

동일한 셸에서 test.sh 스크립트를 생성하는 경우

#!/bin/bash
export A=b
echo $A

출력은 "b"이지만 셸의 A 값은 변경되지 않습니다.

관련 정보