VAR을 다른 스크립트로 내보내는 방법 [닫기]

VAR을 다른 스크립트로 내보내는 방법 [닫기]

이 변수를 다른 스크립트로 내보내려면 어떻게 해야 합니까? 일부 명령을 실행하려면 다른 스크립트를 실행해야 합니다. 스크립트가 너무 커서 이를 분할하고 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
}

물론 최상위 쉘은 라이브러리에 알려진 변수(전역 변수)를 내보낼 수도 있지만 이 접근 방식은 덜 모듈적이므로 권장하지 않습니다.

관련 정보