shell 中單雙引號和反引號的區別

2021-09-25 17:22:00 字數 1115 閱讀 4003

以單引號' '包圍變數的值時,單引號裡面是什麼就輸出什麼,即使內容中有變數和命令(命令需要反引起來)也會把它們原樣輸出。這種方式比較適合定義顯示純字串的情況,即不希望解析變數、命令等的場景。

以雙引號" "包圍變數的值時,輸出時會先解析裡面的變數和命令,而不是把雙引號中的變數名和命令原樣輸出。這種方式比較適合字串中附帶有變數和命令並且想將其解析後再輸出的變數定義。

前面我們還留下乙個疑問,定義變數時,變數的值可以由單引號' '包圍,也可以由雙引號" "包圍,它們到底有什麼區別呢?不妨以下面的**為例來說明:

#!/bin/bash

url=""

website1='c語言中文網:$'

website2="c語言中文網:$"

echo $website1

echo $website2

執行結果:

c語言中文網:$

c語言中文網:

反引號(`)這個字元所對應的鍵一般位於鍵盤的左上角,不要將其同單引號(』)混淆。反引號括起來的字串被shell解釋為命令列,在執行時,shell首先執行該命令列,並以它的標準輸出結果取代整個反引號(包括兩個反引號)部分。如例程中的`date -d '-1 day' +%y%m%d`就是把這條命令的結果賦給變數opdate

#!/bin/bash

hive=/opt/module/hive/bin/hive

if [ -n "$1" ] ;then

do_date=$1

else

do_date=`date -d "-1 day" +%f`

fisql="111111,,,'$do_date'"

echo "$sql"

echo "$do_date"

結果:

$ ./test.sh 

111111,,,'2019-07-29'

2019-07-29

我的建議:如果變數的內容是數字,那麼可以不加引號;如果真的需要原樣輸出就加單引號;其他沒有特別要求的字串等最好都加上雙引號,定義變數時加雙引號是最常見的使用場景。

Shell中的引號,反引號,雙引號,反斜槓

轉貼自 http hi.baidu.com kfeng21 blog item 3b3fcc3fc1bc85f2838b131e.html shell可以識別4種不同型別的引字符號 單引號字元 雙引號字元 反斜槓字元 反引號字元 1.單引號 howard 0 script grep susan ph...

shell中單引號 雙引號 反引號

一 單引號和雙引號 首先,單引號和雙引號,都是為了解決中間有空格的問題。因為空格在linux中時作為乙個很典型的分隔符,比如string1 this is astring,這樣執行就會報錯。為了避免這個問題,因此就產生了單引號和雙引號。他們的區別在於,單引號將剝奪其中的所有字元的特殊含義,而雙引號中...

shell中的單引號 雙引號和反引號

單引號 所有轉移符全部關閉,完整的反應括號中的內容 雙引號 部分轉義符關閉,但某些則保留 如 反引號 反引號內作為乙個系統命令並執行 1 反引號位 位於鍵盤的tab鍵的上方 1鍵的左方。注意與單引號 位於 enter鍵的左方的區別。在linux中起著命令替換的作用。命令替換是指 shell能夠將乙個...