![BASH: 매개변수를 첨자에 전달](https://linux55.com/image/6939/BASH%3A%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%B2%A8%EC%9E%90%EC%97%90%20%EC%A0%84%EB%8B%AC.png)
다음과 같은 스크립트가 있습니다.
#!/bin/bash
. config
./sub-script
구성에는 많은 변수가 있으며 이를 ./subscript arg1 arg2 ... arg100500
.source
아래 첨자에서 구성을 사용할 수 있도록 하는 다른 방법이 있습니까?
답변1
이렇게 스크립트를 설정할 수 있다면
#!/bin/bash
. config
. /path/to/sub-script
초기화된 모든 변수는 config
기본 스크립트와 해당 변수가 시작된 모든 스크립트에서 사용할 수 있어야 합니다.
설명하다
스크립트가 새로운 비대화형 셸 프로세스를 시작하고 상위 스크립트에서 초기화된 셸 변수를 사용할 수 없는 것으로 보입니다. 하지만 내보낸 환경 변수는 새 하위 프로세스에서 사용할 수 있어야 합니다.
답변2
export
변수를 만들 수 있습니다 .
VAR=foo
export VAR
또는:
export VAR=foo
그러나 이러한 변수는 모든 하위 프로세스의 환경에서 볼 수 있습니다.
답변3
구성 파일의 전체 경로 이름을 아래 첨자에 전달할 수 있습니다. 예를 들어:
#!/bin/bash
. ./config
./sub-script ./config
그런 다음 아래 첨자는 다음과 같은 작업을 수행할 수 있습니다.
cfg="$1"
shift
. "$cfg"
비어 있는 $cfg
경우 기본값을 지정할 수도 있습니다 .$1
cfg=${1:-/path/to/default/config}