我想正確導出一個變數。為了做到這一點,我必須理解語法的幾種變體。我已經看到了以下導出變數的機制。在這種情況下我使用.bashrc
:
export MY_VARIABLE=$USER/.gradle
--$export MY_VARIABLE="$USER/.gradle"
- 引號export MY_VARIABLE=USER/.gradle
--沒有$export $MY_VARIABLE=$USER/.gradle
--所有的$
在這些情況下 $ 符號有什麼意義?為什麼有時使用有時不使用?
如果路徑中沒有空格,我們是否需要引號?如果 $USER 中包含的路徑包含空格怎麼辦?
為什麼導出的左邊沒有$?
答案1
export
、等標記declare
明確使用變數名稱作為參數。 $
一般可以理解為「the value of」的意思,所以$variable
意思是「the 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 ];
這是有效的。