2つのスクリプト1.shと2.shがあります。
1.shは次のとおりです。
#!/bin/sh
variable="thisisit"
export variable
2.shは次のとおりです。
#!/bin/sh
echo $variable
私が読んだことによると、このように(エクスポート)することで、あるシェルスクリプトの変数に別のスクリプトからアクセスできます。しかし、これは私のスクリプトでは機能しません。誰か助けてください。前もって感謝します。
sh 1.sh
や./1.sh
などのファイルを実行している場合、サブシェルで実行しています。
現在のシェルで変更を行うには、次のようにします。
. 1.sh
# OR
source 1.sh
reference-documentation を検討することを検討してください。
」source
[または.
]を使用してスクリプトを実行すると、既存のシェル内で実行され、スクリプトによって作成または変更された変数は、スクリプトが完了します。対照的に、スクリプトがfilename
として実行される場合、スクリプトを実行するために別個のサブシェル(変数の完全に別個のセット)が生成されます。」
export
は、実行中のシェルの環境に変数を配置するため、スクリプトによって実行されるプロセスに渡されますが、スクリプトまたは他のプロセスを呼び出すプロセスには渡されません。実行してみてください
#!/bin/sh
FOO=bar
env | grep '^FOO='
そして
#!/bin/sh
FOO=bar
export FOO
env | grep '^FOO='
export
の効果を確認します。
1.sh
から2.sh
に変数を取得するには、2.sh
から1.sh
を呼び出すか、1.sh
に2.sh
をインポートします。
#!/bin/sh
. ./1.sh
echo $variable