2009-05-02 13 views
9

bashコマンドラインで、変数myPath =/home/user/dirを設定します。私はエコー$ myPathを置くスクリプトを作成しましたが、うまくいきません。それは何もエコーしません。スクリプト内のmyPath変数にアクセスするにはどうすればよいですか。コマンドにecho $ myPathを書くと、それは動作しますが、スクリプトでは動作しません。bashスクリプトの変数にアクセスする

答えて

8

は、どのように変数を割り当てるなかった

export myPath=/home/user/dir 
+1

あなたのスクリプトがこれらの変数にアクセスするようにするには、bashプロファイルでexport varも使用します。たとえばJAVA_HOME – LukeSolar

+0

これは誤解を招くことです。 'export'は現在のシェルには目に見える効果がありません。変数の値を現在のシェルから開始したサブプロセスに表示させる必要がある場合に便利です。 – tripleee

+0

@tripleee確かに、何かが欠落していない限り、それはちょうど質問に何を求めているのか、サブプロセス(シェルスクリプトを実行している)から変数にアクセスする方法です。 –

18

を試してみてください?それがされている必要があります:

$ export myPath="/home/user/dir" 

その後、内部のようなシェルプログラム:あなたが望む結果を得るでしょう

#!/usr/bin/env bash 
echo $myPath 

。あなたはまた、環境変数のための入院トリッキーな構文の詳細についてはただのMyScript

myPath="whatever" ./myscript 

ためMYPATH変数を設定するには、これを行うことができます

+1

引用符で囲まれた別の文字列内でこれを使用する必要がある場合は、echo "Path is $ {myPath}" –

1

あなたは "を使用して変数の代入を宣言する必要があります

export myPath="/home/user/dir" 

これにより、シェルには変数がenviroに含まれるようになりますそれが起動するサブプロセスの数です。 デフォルトでは、(エクスポートなしで)宣言する変数はサブプロセスに渡されません。そのため、最初に期待した結果が得られなかったのです。

関連する問題