bashスクリプトで変数を作成し、端末が閉じられるまで(永続的ではない)、その変数を端末に保持しようとしています。export
これは私に必要なものだと思いましたが、うまくいきません。
#!/bin/bash
export VARIABLE='this is a test'
次にスクリプトを実行します。
$ ./test.sh
その後、同じ端末で:
$ echo "$VARIABLE"
しかし、それは空の応答を生成します。
答え1
どうしたの?
新しいプロセスを開始し(プロセス内)、環境変数を設定してプロセスを終了します。変数が消えます。
何をすべきか
Bashスクリプトをインポートして実行しないでください。たとえば、次のいずれか
source ./test.sh
. ./test.sh
答え2
スクリプトの実行時に変数を設定するサブシェルを生成します。スクリプトの実行が終了すると、変数は削除されます。現在のシェルで使用するには、次のようにスクリプトを実行します。
. ./test.sh
答え3
source
(または)に加えて、.
シェル機能を使用することもできます。
この試み:
test_sh() {
export VARIABLE='this is a test'
...
}
テスト:
printf "VARIABLE=%s\n" "${VARIABLE}"
VARIABLE=
。
test_sh
printf "VARIABLE=%s\n" "${VARIABLE}
VARIABLE=this is a test