ターミナルでいくつかの環境変数を設定してから、スクリプトを実行します。スクリプト内の変数を取得するにはどうすればよいですか?私は彼らの価値観を知る必要があります。それらを単に$MY_VAR1
機能しません。それは空です。
変数が、スクリプトを呼び出す環境で本当に環境変数である(つまり、export
でエクスポートされている)場合は、スクリプトでwouldを使用できます。それらがエクスポートされていない、またはシェル変数としても存在しない環境からスクリプトを実行することを示唆していないことを意味します。
例:
$ cat script.sh
#!/bin/sh
echo "$hello"
$ sh script.sh
(hello
はどこにも存在しないため、出力の1行の空行)
$ hello="hi there"
$ sh script.sh
(それでもhello
としての出力として空の行のみがシェル変数であり、環境変数ではありません)
$ export hello
$ sh script.sh
hi there
または、このスクリプト専用であり、呼び出し環境ではない環境変数を設定するには:
$ hello="sorry, I'm busy" sh script.sh
sorry, I'm busy
$ env hello="this works too" sh script.sh
this works too
スクリプトを呼び出す前に、スクリプトでアクセスする環境変数をエクスポートする必要があります。 IE:
Unix> export MY_TEMP=/tmp
Unix> some_script.sh
これで、some_script.shは$ MY_TEMPにアクセスできるようになります。シェルスクリプトを呼び出すと、スクリプト変数の前にピリオド( "。")を付けて "ソース"しない限り、変数のみがエクスポートされた新しい環境が得られます。スペース、次にスクリプト名:
Unix> . some_script.sh # runs in current environment
デバッグのヒント:スクリプトの上部近くにset
コマンドを含めて、スクリプトが参照できる変数を確認します。