bashshell中的單引號和雙引號有什麼區別?

在命令列中,用引號括住文字是相當標準的做法,特別是在處理名稱中有空格的檔案時,但是如何知道是使用單引號還是雙引號?讓我們來看看它們的區別,以及何時應該使用其中一種。...

bashshell中的單引號和雙引號有什麼區別?

在命令列中,用引號括住文字是相當標準的做法,特別是在處理名稱中有空格的檔案時,但是如何知道是使用單引號還是雙引號?讓我們來看看它們的區別,以及何時應該使用其中一種。

一般的規則是雙引號仍然允許擴充套件引號中的變數,而單引號則不允許。請繼續閱讀。

帶簡單文字的引號

如果你只是簡單地把幾個單詞的文字括起來,你用哪一個並不重要,因為它們的作用完全相同。例如,這兩個命令都將建立一個名為Test directory的目錄:

mkdir "Test Directory" mkdir 'Test Directory'

更有經驗的型別可能會注意到,如果需要,還可以使用mkdir Test\Directory。

殼變數展開

在命令列上處理變數時,單引號和雙引號之間的區別變得更加重要。預設情況下,bash將把$test之類的變數擴充套件為完整字串。首先,我們將分配變數:

test="This is a test"

現在您可以在命令列上使用這個變數,如下所示,它只需將這是一個測試輸出到控制檯:

echo $test

這裡是雙引號和單引號之間的區別變得更加明顯,當你使用單引號時,變數不會被擴充套件。例如,如果執行以下命令:

echo '$test'

當您使用單引號時,在命令列上只會看到“$test”,但當您使用雙引號時,它會正確輸出:

bashshell中的單引號和雙引號有什麼區別?

當您在命令列中使用`字元展開命令時,也可以使用同樣的方法。例如,假設您想在另一個命令中使用pwd命令,您可以使用backticks來告訴shell展開它:

echo `pwd`/test

如果您在主資料夾中,您會看到如下輸出:

/home/geek/test

例如,您所在的資料夾路徑中有一個空格,您希望使用ln命令建立指向當前目錄中檔案的符號連結。在使用ln命令時,通常需要指定完整路徑,因此使用“pwd”儲存鍵入要容易得多。

看看當您嘗試使用命令而不使用引號時會發生什麼:

ln –s `pwd`/test /home/geek/linkedname

bashshell中的單引號和雙引號有什麼區別?

相反,您需要用引號括起來:

ln –s "`pwd`/filename" /some/other/path

對於一個更具體的示例,假設我們有一個類似於此示例的資料夾結構,其中所有檔名中都有空格:

bashshell中的單引號和雙引號有什麼區別?

由於unzip命令不支援使用*對所有檔案執行它,因此您需要改用for命令。下面是事情變得有趣的地方:

for f in *.zip;do unzip $f;done

哎呀!看來沒用。

bashshell中的單引號和雙引號有什麼區別?

我們需要做的是在$f變數周圍使用雙引號,如下所示:

for f in *.zip;do unzip "$f";done

現在,每次for命令透過迴圈時,它實際上都會執行這樣一個命令:

unzip "test 1.zip"

當然,它會迴圈並對目錄中的每個檔案執行類似的命令。

讓我們回顧一下

既然我們已經看完了這些例子,我們將快速回顧一下,以防您錯過:

雙引號

  • 當您要在字串中包含變數或使用shell擴充套件時使用。
  • 中的所有字元都被解釋為常規字元,但$或`將在shell上展開。

單引號

  • 單引號內的所有字元都解釋為字串。

就這樣結束了引用的課程。明智地使用它們。

  • 發表於 2021-04-11 06:40
  • 閱讀 ( 39 )
  • 分類:網際網路

你可能感興趣的文章

變數(variables)和java中的資料字面值(data literals in java)的區別

關鍵區別——java中的變數與資料文字 計算機程式是執行一項任務的一組指令。程式設計時需要儲存資料。因此,這些資料被儲存在儲存器中。這些保留的記憶體位置稱為變數。變數應該有唯一的名稱,因為它們應該易於識別...

  • 發佈於 2020-10-19 08:52
  • 閲讀 ( 51 )

學習python?下面是如何操作字串

... Python中的字串可以定義為一系列字元。它們是不可變的,這意味著一旦宣告它們就不能修改。相反,為操作目的建立字串副本。 ...

  • 發佈於 2021-03-11 10:21
  • 閲讀 ( 63 )

如何用google指令碼在google表單中傳送電子郵件

...電子郵件”工作表中,您需要建立一個標題。此電子表格中的每一行將代表一封將被髮送出去的單獨電子郵件。所以在這個例子中,我為收件人的姓名,他們的電子郵件地址,以及我要在指令碼中拼湊的資訊片段建立了一個表。...

  • 發佈於 2021-03-14 04:11
  • 閲讀 ( 45 )

關於linux中bash for loops的所有知識

... bash指令碼只是一個純文字檔案,其中包含bashshell可以讀取和執行的一系列命令。Bash是catalinamacos之前版本和大多數Linux發行版中的預設shell。 ...

  • 發佈於 2021-03-29 06:22
  • 閲讀 ( 59 )

如何在windows命令列上轉義檔案路徑中的空格

...現這一點。假設文字檔案位於C:\Test\檔案.txt,命令提示符中的以下命令將顯示其內容: type C:\Test\File.txt 偉大的。現在,如果您在C:\Test Folder\Test中有相同的檔案呢檔案.txt?如果您嘗試執行下面的命令,它將不起作用,因為檔案...

  • 發佈於 2021-04-01 11:39
  • 閲讀 ( 55 )

如何在linux上使用echo命令

...能。 回聲?回聲! 大多數Linux系統提供兩個版本的echo。bashshell內建了自己的echo,還有一個二進位制可執行版本的echo。 透過使用以下命令,我們可以看到兩個不同的版本: type echo whereis echo type命令告訴我們作為引數傳遞給它...

  • 發佈於 2021-04-03 00:31
  • 閲讀 ( 52 )

如何在linux上建立別名和shell函式

使用別名和bashshell函式建立自己的Linux命令。馴服重複性的任務,截斷冗長的程序,並用您經常使用且難以記住的選項配置標準命令。 別名和shell指令碼是Linux和類Unix作業系統中的強大技術,允許您將命令列體驗磨練為您想要的...

  • 發佈於 2021-04-03 03:45
  • 閲讀 ( 46 )

bash需要知道的15個特殊字元

如果您想在Linux、macOS或其他類似UNIX的系統上掌握bashshell,那麼特殊字元(如~、*、|和>)是至關重要的。我們將幫助您解開這些神祕的Linux命令序列,成為象形文字的英雄。 什麼是特殊字元(special characters)? bashshell以兩...

  • 發佈於 2021-04-03 03:58
  • 閲讀 ( 51 )

如何在iphone和ipad上關閉智慧標點符號

...當我引用這段文字時”,引號是成角度的。這和“It's”中的撇號是一樣的。而且,如果你在iOS上輸入兩個連字元,一行中沒有空格(-),它們就會轉換成實際的em破折號(-)。聰明的標點符號讓文字看起來更聰明。 那麼,你為...

  • 發佈於 2021-04-06 16:51
  • 閲讀 ( 50 )

linux下如何從pdf檔案中提取和儲存影象

...edImages/image 注意:對於本文中顯示的所有命令,請將命令中的第一個路徑和PDF檔名替換為原始PDF檔案的路徑和檔名。第二個路徑應該是要將提取的影象儲存到的根資料夾的路徑。第二條路徑末尾的單詞“image”表示您想在檔名前...

  • 發佈於 2021-04-10 06:14
  • 閲讀 ( 41 )
wos7943
wos7943

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦