0

ソースを使用してメインから 2 つのシェル スクリプトを実行しています。

main.sh
#/bin/sh

a=1
b=2
c=3

gnome-terminal -x sh -c ". ./test1.sh|less" (note the source ".")

gnome-terminal -x sh -c ". ./test2.sh|less"
...
...

test1.sh
#!/bin/sh

echo "a="$a #doesn't print anything

次の 2 を個別に実行できましたが、組み合わせると、メインの変数に他のファイルにアクセスできません 1. gnome-terminal -x sh -c "test1.sh|less" #別のターミナルで実行可能 2 . . ./test1.sh #test1.sh の main.sh から変数にアクセス可能

4

2 に答える 2

1

ここには 2 つの問題があります。1 つ目は、変数をエクスポートしないことです。

この場合、次のことを行う必要があります。

export a b c

変数を設定した後。

2 つ目の問題は、既存の gnome-terminal セッションが存在する場合、それを再利用してターミナル ウィンドウが起動されることです。この既存のセッションは、これらの環境変数を認識しません。--disable-factoryその結果、オプションを gnome-terminal コマンドに渡す必要があります。

gnome-terminal --disable-factory -x sh -c ". ./test1.sh|less"

ウィンドウに適切な値が表示されます。

于 2013-10-02T09:47:57.363 に答える
0

子プロセスから変数にアクセスできるようにするには、変数をエクスポートする必要があります。

export a=1

于 2013-10-02T08:11:36.060 に答える