shell在使用的過程中,經常會使雙引號或者單引號將字串括起來,也可以不使用引號來定義字串變數。示例如下:
str1=
"teststring"
#雙引號
str2=
'teststring'
#單引號
str3=teststring #無引號
因此字串變數的定義有三種方式,分別是雙引號、單引號和無引號。這三種方式有什麼區別呢?單引號和雙引號又有什麼區別呢?
單引號定義字串所見即所得,即將單引號內的內容原樣輸出,或者描述為單引號裡面看到的是什麼就會輸出什麼。單引號是全引用,被單引號括起的內容不管是常量還是變數都不會發生替換。
var=dablelv
echo
'$var'
輸出:
$var
雙引號引用的內容,所見非所得。如果內容中有命令、變數等,會先把變數、命令解析出結果,然後在輸出最終內容。雙引號是部分引用,被雙引號括起的內容常量還是常量,變數則會發生替換,替換成變數內容。
var=dablelv
echo
"$var"
輸出:
dablelv
不使用引號定義字串時,字串不能包含空白字元(如space或tab),需要該加引號,一般連續的字串,數字,路徑等可以不加引號。如果內容中有命令、變數等,會先把變數、命令解析出結果,然後在輸出最終內容。
str1=
"test string"
str2=
'test string'
str3=test string
echo
$str1
echo
$str2
echo
$str3
輸出:
test string
test string
可見,字串中包含有空格時不實用引號括起來,將無法正常輸出。
5.建議
字串常量使用單引號括起來,如果字串中含有變數、命令等使用雙引號括起來,不建議不加引號。
Shell中單引號和雙引號區別
1.在 home atguigu bin建立乙個test.s 件 mkluo hadoop102 bin vim test.sh 在檔案中新增如下內容 bin bash do date 1 echo do date echo do date echo do date echo do date ech...
Shell中單引號和雙引號區別
1 在 home coder bin建立乙個test.s 件 coder hadoop102 bin vim test.sh 在檔案中新增如下內容 bin bash do date 1 echo do date echo do date echo do date echo do date echo ...
shell中單引號 雙引號的區別
hard quote 單引號,關閉所有的meta 什麼是meta,自己查吧 soft quote 雙引號,關閉大部分的meta,但是某些保留,例如 這裡也提一下escape 反斜槓,它只會關閉緊跟escape之後的字元。參考cu上經典的十三問,hard quote關閉shell的meta,而soft...