初學 Shell 編程時,對變量各種引用使用不太熟悉,走了很多彎路,本文記錄變量引用的一些用法,希望對大家有所幫助。
引用
引用指將字符串用引用符號引起來,以防止特殊字符被 shell
腳本解釋為其他意義。 shell
中定義了 4 種引用符號。
引用符 | 名稱 | 說明 |
---|---|---|
'' | 單引號 | 稱全引用或弱引用,引用所有的字符 |
"" | 雙引號 | 稱部分引用或強引用,引用除美元符號($)、反引號(‘)和反斜線(\)之外的所有字符。 |
`` | 反引號 | shell 把反引符中的內容解釋為系統命令 |
\ | 反斜杠 | 轉義符,屏蔽下一個字符的特殊意義 |
實例腳本
可以使用 sh -v testVar.sh
命令來執行如下腳本,查看原始命令及輸出內容。
# 實例腳本
$ cat testVar.sh
#!/bin/bash
# 變量引用示例
var=daodaotest
## 雙引號
# 正常賦值輸出
echo "Hello $var"
# 正常賦值輸出,${} 方式
echo "Hello ${var}"
# 不會有任何輸出,shell 會去引用變量 var2 的值
echo "$var2"
# 正常輸出,推薦使用 ${} 方式來引用變量
echo "${var}2"
## 反引號
# 把 pwd 解釋為系統命令,即:先執行 pwd,再 echo 打印
echo `pwd`
# 相等於 `pwd`
echo $(pwd)
# 同理
echo `echo $var`
## 單引號
echo '單引號引用時,輸出字面內容:$var'
echo '單引號引用時,輸出字面內容:${var}'
## 轉義符
echo '使用單引號引用,不需要使用轉義符號: $、`、"、\'
echo "使用雙引號引用,需要使用轉義符號: \$、\`、\"、\\"
echo "\$var"
## 反引號嵌套單引號和雙引號
jobName=dev-daodaotest
viewName=dev
# 此處的變量 ${viewName} 其實是放在了兩對單引號中間,起到拼接的作用
name=`echo ${jobName}|awk 'BEGIN{FS="'${viewName}'-"} {print $2}'`
echo ${name}
微信公眾號:daodaotest