睡睡念
最近寫CI/CD,碰到一堆shell script的指令,
以前都是try error一路試過去的,
沒碰到什麼太大問題,直到現在那一長串,我才終於發瘋。
正文
簡單說法
shell script的 單引號 『 ’ 』括起來的字,
會保留引號內每個字元,就是說裡面的變數不會變。
abc="a"
echo '$abc';
就是印出
$abc
而雙引號 『 " 』 括起來的字,
不會保留引號內的字元,就是說裡面的變數會跟著變
abc=a
echo "$abc"
印出
a
所以看起來會像這樣
如果變成單引號包雙引號,或是 雙引號包單引號
echo '"$abc"'
echo "'$abc'"
$abc
‘a’
詳細說法
單引號:
shell 將逐字解釋單引號內的封閉文字,並且不會插入任何內容,包括變數、反引號、某些 \ 轉義符等,所有字元都會維持原始字面意義
雙引號:
允許 shell 解釋美元符號 ( $ )、反引號 ( ` )、反斜槓 ( \ ) 和驚嘆號 (!), 這些字元與雙引號一起使用時具有特殊含義,並且在顯示之前對其進行評估
ref.
p.s 上面宣告的 abc 叫做本地變數(local variable),
如果用上了export 則是 環境變數(environment variable)
常見變數錯誤
A = B #=號前後不能有空格
1A=B #變量名稱不能以數字開頭
$A=B #變量的名稱裡有$
a=B #這跟a=b是不同的
0 意見:
張貼留言