![VAR을 다른 스크립트로 내보내는 방법 [닫기]](https://linux55.com/image/132954/VAR%EC%9D%84%20%EB%8B%A4%EB%A5%B8%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A1%9C%20%EB%82%B4%EB%B3%B4%EB%82%B4%EB%8A%94%20%EB%B0%A9%EB%B2%95%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
이 변수를 다른 스크립트로 내보내려면 어떻게 해야 합니까? 일부 명령을 실행하려면 다른 스크립트를 실행해야 합니다. 스크립트가 너무 커서 이를 분할하고 var를 다른 스크립트에 넣고 싶기 때문에 이것을 원합니다.
# palavlas가 사용자 이름을 전달할 때 보호에 주의하십시오. 비밀번호 목록 = "$HOME/passwords.txt" user_list="$HOME/users.txt" newpassword_list="$HOME/newuserpassword.txt" # 메일 목적지="메일" ENVIADOPOR="메일" ASSUNTO="Palavra passe, 유틸리티, 호스트 이름" # SSH 비밀번호 run1="sshpass -p $oldpass sshhost@ip" run2="sshpass -p $새 비밀번호 ssh 호스트@ip" run3="sshpass -p $oldpass sshhost@ip" run4="sshpass -p $새 비밀번호 ssh 호스트@ip" run5="sshpass -p $oldpass ssh redmine@ip" run6="sshpass -p $새 비밀번호 ssh redmine@ip"
답변1
기본적으로 귀하의 질문에 답하기 위해 변수 할당 전에 "export" 키워드를 사용하면 실행할 모든 하위 쉘에서 사용할 수 있습니다. 예를 들면 다음과 같습니다.
export DESTINATARIO="mail"
그러나 스크립트가 "너무 크다"는 것이 이유라면 쉘 스크립트를 라이브러리로 구성하고 최상위 스크립트를 사용하여 포함 파일의 함수를 호출하는 것도 고려해 볼 수 있습니다. 예:
#!/bin/bash
# load functions defined in mylib1.sh and mylib2.sh
source mylib1.sh
source mylib2.sh
# set my var
VAR1=123abc
# call functions from mylib1.sh and mylib2.sh
lib1func1 $VAR1
lib2func2 $VAR1
예를 들어, mylib1.sh에는 lib1func1이라는 함수 정의가 있습니다.
lib1func1() {
local firstvar=$1 # reading
echo $firstvar
}
물론 최상위 쉘은 라이브러리에 알려진 변수(전역 변수)를 내보낼 수도 있지만 이 접근 방식은 덜 모듈적이므로 권장하지 않습니다.