この変数を別のスクリプトにエクスポートするにはどうすればよいですか?一部のコマンドを実行するには、別のスクリプトを実行する必要があります。スクリプトが大きすぎて分割し、varを別のスクリプトに入れたいので、これをしたいです。
#palavlasがユーザー名を渡すときの保護に注意してください。 パスワードリスト = "$HOME/passwords.txt" user_list="$HOME/users.txt" newpassword_list="$HOME/newuserpassword.txt" #mail 目的地="メール" 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
}
もちろん、最上位シェルはライブラリに既知の変数(グローバル変数)をエクスポートすることもできますが、このアプローチはあまりモジュール的ではないため、お勧めできません。