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
에 할당하는 것은 필요하지 않습니다. 간단하게 작성할 수도 있지만 위치 매개변수를 처리하는 방법을 보여주기 위해 이렇게 썼습니다.file
source "$1"
답변2
너무 많은 변수를 전달하고 싶지 않다면 아래 첨자가 호출되는 줄에 변수를 설정하는 것이 좋습니다.
sed -i 's/ = /=/' "$file"
source "$file"
variable1=$variable1 variable2=$variable2 /path/to/another/script.sh