偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Bash Shell 中單引號和雙引號的區(qū)別

系統(tǒng) Linux
本文將介紹不同類型的引號及其在 shell 腳本中的用法。

我們在 Linux 命令中經(jīng)常會(huì)用到引號,比如處理文件名中的空格,或者處理特殊字符的時(shí)候。

本文將介紹不同類型的引號及其在 shell 腳本中的用法。

總結(jié)一下,大概有四種類型的引號:

  • 單引號:'
  • 雙引號:"
  • 反斜杠:\
  • 反引號:`

除了反斜杠以外,其余三個(gè)都是成對出現(xiàn)。下面我們來詳細(xì)看一下。

1.單引號

shell 會(huì)忽略單引號中所有的特殊字符,其中的所有內(nèi)容都會(huì)被當(dāng)作一個(gè)元素。

我們舉個(gè)例子,假如有一個(gè)文本文件,里面記錄了一些人名,如下:

$ cat cricket
Allan Donald, South Africa
Steve Waugh, Australia
Mark Waugh, Australia
Henry Olonga, Zimbabwe
Sachin Tendulkar, India

現(xiàn)在我們使用 grep 命令在其中搜索 "Waugh",會(huì)得到兩個(gè)結(jié)果:

$ grep Waugh cricket
Steve Waugh, Australia
Mark Waugh, Australia

但是如果我們更精確一點(diǎn),搜索 Steve Waugh,就會(huì)出現(xiàn)錯(cuò)誤:

$ grep Steve Waugh cricket
grep: Waugh: No such file or directory
cricket:Steve Waugh, Australia

為什么會(huì)這樣呢?因?yàn)榭崭裨诿钚兄杏糜诜指蠲睢⑦x項(xiàng)和參數(shù)。在上面的例子中,我們原本是要搜索 Steve Waugh,但 shell 會(huì)將 Steve 作為 grep 的第一個(gè)參數(shù),然后將 Waugh 和 cricket 作為被搜索的文件,很顯然,沒有 Waugh 這個(gè)文件,所以就報(bào)錯(cuò)了。同時(shí),輸出中顯示了文件 cricket 的結(jié)果。

如果我們使用單引號,來搜索 'Steve Waugh',它會(huì)被視為一個(gè)整體,那這樣就得到了我們期望的搜索結(jié)果:

$ grep 'Steve Waugh' cricket
Steve Waugh, Australia

基本上,當(dāng)shell看到第一個(gè)單引號時(shí),它會(huì)忽略任何特殊字符(空格也是一個(gè)特殊字符),直到找到另一個(gè)單引號(右引號)。

忽略所有特殊字符

如果用單引號引起來,所有特殊字符都會(huì)失去其原本的意義。下面我們舉幾個(gè)例子。

我們在shell中聲明一個(gè)變量,如果用$回顯變量名,它將顯示變量的值:

$ var=my_variable
$ echo $var
my_variable

但如果用單引號引起來,$ 將失去其特殊的功能。

$ echo '$var'
$var

另一個(gè)例子,回車鍵(回車字符)也放在單引號里面:

$ echo 'how are
you?'
how are
you?

2.雙引號

雙引號幾乎與單引號相似。這里之所以說“幾乎”是因?yàn)樗麄円矔?huì)忽略所有特殊字符,除了:

  • 美元符號:$
  • 反引號:`
  • 反斜杠:\

由于美元符號 $ 不會(huì)被忽略,所以我們可以使用變量名,得到變量的值;但是單引號就不能這樣:

$ var=my_variable
$ echo " echo 'var

雙引號還可用于在shell中轉(zhuǎn)義單引號(即將其轉(zhuǎn)義為普通字符):

$ var=My 'own villa' is yellow
own villa: command not found
$ var="My 'own villa' is yellow"
$ echo $var
My 'own villa' is yellow

反過來用(用單引號轉(zhuǎn)義雙引號),也可以:

$ var=he said, "Awesome!"
said,: command not found
$ var='he said, "Awesome!"'
$ echo $var
he said, "Awesome!"

3.反斜杠

反斜杠用于轉(zhuǎn)義特殊字符??聪旅娴睦樱?/p>

$ var=variable
$ echo \var
var
$ echo $var
variable
$ echo \$var
$vara

因?yàn)?v 沒有什么特別的含義,echo \var 只是簡單的打印了 var。另一方面,當(dāng)使用 $var 的時(shí)候,反斜杠轉(zhuǎn)義了 $ 符號,所以打印出了 $var。

用反斜杠轉(zhuǎn)義換行符

我們可以使用反斜杠來轉(zhuǎn)義換行符,這樣就可以將單個(gè)命令換行繼續(xù)編寫。

當(dāng)命令太長或是多個(gè)命令的組合時(shí),你會(huì)看到一些網(wǎng)站使用反斜杠在多行中顯示單個(gè)命令。這可以使命令或代碼更具可讀性。

看下面的例子:

docker run --name server --network net -v html:/usr/share/nginx/html -v $PWD/custom-config.conf:/etc/nginx/nginx.conf -p 80:80 --restart on-failure -d nginx:latest

現(xiàn)在我們使用反斜杠,將上述命令分解為多行:

docker run --name server --network net \
-v html:/usr/share/nginx/html \
-v $PWD/custom-config.conf:/etc/nginx/nginx.conf \
-p 80:80 --restart on-failure -d nginx:latest

這樣看起來容易多了。

雙引號內(nèi)的反斜杠

在雙引號內(nèi),/ (反斜杠)、$ (美元符號)以及 ` (反引號)是不被轉(zhuǎn)義的三個(gè)符號。

這樣的話,我們就可以使用反斜杠來轉(zhuǎn)義雙引號中的美元符號、雙引號以及反引號了。

看下面的例子,其中的 $5 會(huì)被認(rèn)為是一個(gè)未聲明的變量,且沒有被賦值,所以在 echo 命令中會(huì)將其忽略:

$ echo "Meal costs $5.25"
Meal costs .25

要避免上述情況,可以使用 \ 來轉(zhuǎn)義 $

$ echo "Meal costs \$5.25"
Meal costs $5.25

4.反引號

反引號( ` )有一個(gè)特殊含義,用于命令替換。

Shell 具有此命令替換功能,其中指定的命令將替換為命令的輸出。

在下面的例子中,??date?? 會(huì)被替換為 date 命令的輸出信息,即系統(tǒng)的當(dāng)前日期和時(shí)間而輸出:

$ echo The current date and time is ??date??
The current date and time is Monday 23 August 2021 04:55:18 PM IST

需要注意的一點(diǎn)是,只有當(dāng)反引號之間是一個(gè)命令的時(shí)候,才會(huì)進(jìn)行替換,否則,將會(huì)按原內(nèi)容顯示:

$ echo 'The current date and time is ??late??'
The current date and time is ??late??

如前文所述,將反引號放在雙引號中,不會(huì)被轉(zhuǎn)義,但是放在單引號中,會(huì)被轉(zhuǎn)義為普通字符。

反引號不在建議使用

很長時(shí)間以來,反引號都用于 Shell 腳本中的命令替換,但是現(xiàn)在,現(xiàn)代 Unix 和 Linux 系統(tǒng)更提倡使用 $(command) 結(jié)構(gòu),比如:

$ echo The current date and time is $(date)
The current date and time is Monday 23 August 2021 05:55:47 PM IST

所以,反引號已經(jīng)不再使用了。

以上就是本次分享全部內(nèi)容,歡迎討論。

責(zé)任編輯:龐桂玉 來源: TIAP
相關(guān)推薦

2011-05-19 13:45:15

PHP單引號雙引號

2021-10-14 06:51:55

Shell 單引號雙引號

2010-07-13 11:25:42

Perl雙引號

2022-03-23 14:04:32

SQL字符串數(shù)據(jù)類型

2022-05-19 23:40:34

SQL語句引號

2019-08-23 09:17:11

Python腳本語言字符串

2011-05-19 14:00:51

PHP單引號雙引號

2010-07-02 10:33:18

SQL Server單

2009-12-25 15:59:25

shell編程

2015-04-16 10:15:45

PHPPHP執(zhí)行效率PHP技巧

2011-03-07 15:49:13

2015-09-21 11:45:10

PHP編程效率要點(diǎn)

2009-08-17 16:59:47

C#轉(zhuǎn)義字符雙引號

2021-02-24 09:43:36

MySQL數(shù)據(jù)庫雙引號

2009-08-17 14:49:34

C#正則表達(dá)式雙引號

2009-11-30 18:34:22

PHP簡單語法

2024-11-11 11:51:07

2012-07-19 15:30:00

Linux

2017-05-22 08:35:07

MySQL雙引號錯(cuò)位

2021-02-01 10:42:47

MySQL雙引號數(shù)據(jù)庫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號