별도의 파일에서 다른 변수의 변수를 할당하는 방법

별도의 파일에서 다른 변수의 변수를 할당하는 방법

예를 들어 다음과 같은 변수가 포함된 파일이 있습니다.

문서

DEVICE0_USB="usbSerialNo1"
DEVICE1_USB="usbSerialNo2"

이 변수의 내용을 스크립트의 변수에 할당하고 싶습니다. 예를 들면 다음과 같습니다.

스크립트

FAX_MACHINE_USB=$DEVICE0_USB
COFFEE_MAKER_USB=$DEVICE1_USB

그래서 내가 echo $FAX_MACHINE_USB받았을 때usbSerialNo1

source다음을 사용하여 변수를 얻을 수 있습니다 .문서그러나 이것은 또한 모든 라인을 실행합니다문서. 내 경우에는 이것이 문제가 되지 않는다. 왜냐하면문서변수선언만 있는데 아직은 그러고 싶지 않네요. 이것을 달성하는 다른 방법이 있습니까?

답변1

비슷한 질문에 대답하는 것 같습니다여기.

물론 원하는 경우 변수를 사용 .하거나 할당할 수 있지만 파일의 특정 행만 사용 하거나 실행할 source수도 있습니다.awkgrep바라보다가변 감속과 같습니다.

다양한 변수에 대처하는 방법

에 모든 변수를 할당하려면 script1.sh다음을 고려하세요.

source <(grep -E '^\w+=' script1.sh)

이는 변수 할당처럼 보이는 모든 줄을 grep추출 하는 데 사용됩니다 . script1.sh그런 다음 이 행은 현재 셸에서 실행되고 변수가 할당됩니다.

이 방법을 사용하는 경우 먼저 모든 변수가 필요한지, 수행 중인 작업을 방해하는 변수가 없는지 확인하십시오. 그러한 경우가 있으면 grep두 번째 명령을 사용하여 제외할 수 있습니다.

각 부분을 차례로 고려하십시오.

  • source filefile현재 쉘에서 실행되도록 쉘에 지시합니다.

  • <(...)프로세스 대체라고 합니다. 이를 통해 파일 이름 대신 명령의 출력을 사용할 수 있습니다.

  • 이 명령은 grep -E '^\w+=' script1.sh변수 할당처럼 보이는 모든 줄을 추출합니다. 명령줄에서 이 명령을 단독으로 실행하면 다음과 비슷한 내용이 표시됩니다.

    variable="Hello"
    var2="Value2"
    

    등. 먼저 이 작업을 수행하고 출력을 확인하여 실행하려는 라인이 맞는지 확인해야 합니다.

관련 정보