1

test1.sh と test2.sh という 2 つのシェル スクリプトがあります。test1.sh
は以下のステートメント
があります

#!/bin/sh
I="10"
echo $I

test2.shでは、変数の同じ値がコピーされて出力されます

#!/bin/sh
J=$I
echo $J

crontab で両方のスクリプトを実行する必要があります。export コマンドを試しましたが、何も機能しませんでした。

4

3 に答える 3

2

これをcrontabに追加します:

. ./test1.sh && ./test2.sh;

そして、次のようにtest1.shを変更します。

#!/bin/sh
export I="10"
echo $I

.最初のものはソースとして実行され、変数を保持します。

于 2013-02-18T11:03:38.497 に答える
1

どちらのスクリプトも独自のシェルで実行されており、環境をプロセスとのみ共有します。2つの別々のシェルスクリプトで環境変数を共有する場合は、スクリプトを呼び出す前に、親プロセスで変数を設定(およびエクスポート)する必要があります。

変数のみを設定する3番目のスクリプトを作成し、そのスクリプトを2つのメインスクリプトから取得することもできます。

于 2013-02-18T10:34:24.070 に答える
0

test1.shin 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
于 2013-02-18T10:34:36.870 に答える