bashrc の変数の基本的な構文の説明

bashrc の変数の基本的な構文の説明

変数を正しくエクスポートしたいのですが、そのためには構文のいくつかのバリエーションを理解する必要があります。変数をエクスポートするメカニズムとして、次のようなものがあります。この場合、次を使用します.bashrc

  1. export MY_VARIABLE=$USER/.gradle--$

  2. export MY_VARIABLE="$USER/.gradle"--引用

  3. export MY_VARIABLE=USER/.gradle--$なし

  4. export $MY_VARIABLE=$USER/.gradle--すべての$

このような場合の $ 記号の意味は何でしょうか? なぜ $ 記号が使用される場合と使用されない場合があるのでしょうか?

パスにスペースがない場合には引用符が必要ですか? $USER に含まれるパスにスペースが含まれている場合はどうなりますか?

エクスポートの左側に $ がないのはなぜですか?

答え1

export、などのトークンはdeclare、変数名をパラメータとして明示的に使用します。 は $一般に「 の値」を意味すると理解できるため、 は$variable「 の値」を意味しますvariable。次のコマンド セットを考えてみましょう。

foo=bar
bar=baz
export $foo
( echo "$foo" )

ここで何が起こるかというと、出力に空白行が 1 行表示されます。これは、 コマンドではexport、が$foo実際にはbar( の値foo) であるため、実際に実行されるコマンドは となるからですexport barfooはエクスポートされないため、そのデフォルト値は null です。ただし、最後の行が次の場合:

( echo "$bar" )

の出力が得られbaz、その値は後続のサブシェルに edbarされたものです。export

"一般的に、弱い引用符(" ")を使用することは非常に良い考えです。全て変数参照の、あなたが言及した理由(つまり、ファイル名とパス内のスペース)を含むがそれに限定されない理由。たとえば、次のような場合です。

if [ $letter == a ]; then echo "ayyyy"; fi

しかし、letter空の場合、シェルは実行を試みます

if [  == a ]

これは構文エラーですが、引用符が付いています。

if [ "$letter" == a ];

なる

if [ "" == a ];

これは有効です。

関連情報