test1.sh と test2.sh という 2 つのシェル スクリプトがあります。test1.shに
は以下のステートメント
があります。
#!/bin/sh
I="10"
echo $I
test2.shでは、変数の同じ値がコピーされて出力されます
#!/bin/sh
J=$I
echo $J
crontab で両方のスクリプトを実行する必要があります。export コマンドを試しましたが、何も機能しませんでした。
これをcrontabに追加します:
. ./test1.sh && ./test2.sh;
そして、次のようにtest1.shを変更します。
#!/bin/sh
export I="10"
echo $I
.
最初のものはソースとして実行され、変数を保持します。
どちらのスクリプトも独自のシェルで実行されており、環境を親プロセスとのみ共有します。2つの別々のシェルスクリプトで環境変数を共有する場合は、スクリプトを呼び出す前に、親プロセスで変数を設定(およびエクスポート)する必要があります。
変数のみを設定する3番目のスクリプトを作成し、そのスクリプトを2つのメインスクリプトから取得することもできます。
test1.sh
in scriptの出力を使用する場合はtest2.sh
、2 つのオプションがあります。
test1.sh
ファイルに保存し、そのファイルを読み戻すtest2.sh
test1.sh
するtest2.sh
test2.sh:
#!/bin/sh
J=$(test1.sh)
echo $J
@Joachim Pileborg が既に提案したように、1 つのスクリプトで変数を設定 (エコーはしない) し、もう 1 つのスクリプトでそれをソースすることができます。
test1.sh
I="10"
J=20
K=30
test2.sh
source test1.sh
# do something with I, J, K