Bash

bashrc中變數的基本語法解釋

  • May 23, 2017

我想正確導出一個變數。為了做到這一點,我必須了解幾種語法變化。我已經看到了以下導出變數的機制。在這種情況下,我正在使用.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 中包含的路徑包含空格怎麼辦?

為什麼出口左側沒有$?

諸如export,等標記declare明確使用變數名作為參數。 $一般可以理解為“value of”,所以$variable意思是“value of variable”。採取這組命令:

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

這裡會發生的是你會得到一個空行的輸出。這是因為在export命令中,$foo實際上是bar(的值foo),所以實際執行的命令是export bar。由於foo未導出,因此其預設值為 null。但是,如果最後一行是:

( echo "$bar" )

您將獲得 的輸出baz,其值bar已被export編入即將發布的子shell。

通常在所有"變數引用周圍使用弱引號 (" “)是一個非常好的主意,原因包括但不限於您提到的那個(即文件名和路徑中的空格)。例如,如果我們有:

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

但是letter是空的,shell 會嘗試執行

if [  == a ]

這是一個語法錯誤,但帶有引號:

if [ "$letter" == a ];

變成

if [ "" == a ];

這是有效的。

引用自:https://unix.stackexchange.com/questions/366772