한 스크립트에서 다른 스크립트로 매개변수 전달

한 스크립트에서 다른 스크립트로 매개변수 전달

Bash 스크립트를 사용하고 있고 파일을 받고 있다고 가정해 보겠습니다. 이와 같은 파일을 얻은 후 변수를 다른 스크립트에 어떻게 전달할 수 있습니까?

sed -i 's/ = /=/' $file
source $file

파일에 다음이 포함되어 있다고 가정합니다.

variable1=10
variable2=apple

이러한 매개변수를 다른 스크립트에서 사용하려면 어떻게 이 매개변수를 다른 스크립트에 전달한 다음 현재 Bash 스크립트에서 해당 스크립트를 실행할 수 있습니까?

답변1

다른 방법으로 매개변수를 전달하는 것과 거의 같은 방식으로 전달합니다.

sed -i 's/ = /=/' "$file"
source "$file"

/path/to/another/script.sh "$variable1" "$variable2"

분명히 적절한 명령줄 스위치를 사용하십시오(또는 해당되는 경우 사용하지 않음).

위 코드를 사용하는 경우 의 값은 다른 스크립트에서 (첫 번째 명령줄 인수) 및 로 $variable1사용됩니다 .$1$variable2$2

새 스크립트에서 원래 이름을 유지하려면 위치 매개변수를 사용하여 이름을 다시 할당해야 합니다. 예:

variable1=$1
variable2=$2

그러나 이는 가장 효율적인 접근 방식이 아닐 수 있으며 다음 제안 사항을 사용하는 것이 더 나을 수도 있습니다.


실제로 첫 번째 스크립트 대신 두 번째 스크립트에서 파일을 가져오고 싶을 수도 있습니다. 이 경우 다음을 수행해야 할 수도 있습니다.

스크립트1.sh:

sed -i 's/ = /=/' "$file"
/path/to/another/script2.sh "$file"

Script2.sh:

file=$1
source "$file"
printf '%s\n' "$variable1"
printf '%s\n' "$variable2"

관련 추천 도서:3.4.1 위치 매개변수

참고: 변수 $1에 할당하는 것은 필요하지 않습니다. 간단하게 작성할 수도 있지만 위치 매개변수를 처리하는 방법을 보여주기 위해 이렇게 썼습니다.filesource "$1"

답변2

너무 많은 변수를 전달하고 싶지 않다면 아래 첨자가 호출되는 줄에 변수를 설정하는 것이 좋습니다.

sed -i 's/ = /=/' "$file"
source "$file"

variable1=$variable1 variable2=$variable2 /path/to/another/script.sh

관련 정보