Pages - Menu

2023年5月19日 星期五

[ShellScript]shell script 雙引號與單引號

睡睡念

最近寫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是不同的

ref. shell十三問之5:問var=value 在export前後的差在哪?

沒有留言:

張貼留言