成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

終于知道 Shell 中單引號雙引號的區別了

系統 Linux
在編寫 shell 腳本或輸入命令時,你可能已經注意到大多數命令都可以使用單引號 或雙引號, 這不僅適用于 shell 腳本,而且適用于所有 Bash 命令, 但是兩種類型的引號以及 Bash shell 解釋它的方式之間存在一定的差異,下面將介紹它們之間的不同。

[[428808]]

本文轉載自微信公眾號「Linux開發那些事兒」,作者LinuxThings 。轉載本文請聯系Linux開發那些事兒公眾號。

在編寫 shell 腳本或輸入命令時,你可能已經注意到大多數命令都可以使用單引號 或雙引號, 這不僅適用于 shell 腳本,而且適用于所有 Bash 命令, 但是兩種類型的引號以及 Bash shell 解釋它的方式之間存在一定的差異,下面將介紹它們之間的不同

單引號

用單引號 ' ' 括起來的字符會保留引號內每個字符的字面值

簡而言之,shell 將逐字解釋單引號內的封閉文本,并且不會插入任何內容,包括變量、反引號、某些 \ 轉義符等

單引號中的任何字符都沒有特殊含義, 當你不想使用轉義字符來更改 shell 腳本解釋輸入字符串參數方式時,就會很方便

雙引號

雙引號類似于單引號,只是它允許 shell 解釋美元符號 ( $ )、反引號 ( ` )、反斜杠 ( \ ) 和感嘆號 ( ! ), 這些字符與雙引號一起使用時具有特殊含義,并且在顯示之前對其進行評估

雙引號可以通過在雙引號前加上反斜杠來使用其自身

實例

下面通過幾個實例來說明 單引號 和 雙引號之間的一些區別

實例1

新建 shell 腳本 t1.sh ,內容如下

  1. #!/bin/bash 
  2.  
  3. a=98 
  4. echo "$a" 
  5. echo '$a' 

執行 ./t1.sh 命令,結果如下

  1. [root@localhost quotes_test]# ./t1.sh  
  2. 98 
  3. $a 

從結果可以看出,雙引號中的 $a 被解釋為變量 a 的值

但是單引號中的 $a 只是原樣輸出,單引號不會解釋其中的 $ 以及 a 字符

實例2

雙引號中的 \\n 會被轉義成換行符\n,但在單引號內,\n 被當成普通字符與同一行的其他字符一起顯示

實例3

新建 shell 腳本 t2.sh, 內容如下

  1. #!/bin/bash 
  2.  
  3. ary[0]=8 
  4. echo "${ary[0]}" 
  5. echo '${ary[0]}' 

執行腳本,結果如下

  1. [root@localhost quotes_test]# ./t2.sh  
  2. ${ary[0]} 

從結果可以看出,當 ${ary[0]} 用雙引號括起來時,表示數組的第一個元素,所以輸出 8

但是,被單引號括起來時,被當做單純的字符輸出,并不會解釋為數組的第一個元素

實例4

新建 shell 腳本 t3.sh, 內容如下

  1. #!/bin/bash 
  2.  
  3. a=45 
  4. echo "'$a'" 
  5. echo '"$a"' 

執行腳本,結果如下

  1. [root@localhost quotes_test]# ./t3.sh  
  2. '45' 
  3. "$a" 

由上面的結果可知,單引號在雙引號內沒有特殊的含義,因此,即使 $a 在單引號內,也還是會解釋成 45

但是,當雙引號在單引號內時,即使 $a 位于雙引號內,也不會對變量 a 求值, 還是按照普通字符輸出

實例5

新建 shell 腳本 t4.sh, 內容如下

  1. #!/bin/bash 
  2.  
  3. a=" $(printf hello) "  # 相當于 " `printf hello` " 
  4. b=' $(printf hello) '  # 相當于 ' `printf hello` ' 
  5. echo $a 
  6. echo $b 

執行腳本,結果如下

  1. [root@localhost quotes_test]# ./t4.sh  
  2. hello 
  3. $(printf hello) 

從結果可以知道,雙引號中的 $(printf hello) 會被解釋成 printf hello 命令,執行 echo $a 命令相當于執行了 printf hello , 結果輸出 hello

單引號中的 $(printf hello) ,只是表示普通字符而已,所以 echo $b 命令的結果是 $(printf hello) 字符的原樣輸出

小結

本文介紹了 shell 中單引號和雙引號的區別,主要是通過實例的方式來展示他們之間的不同點,熟悉了它們的不同點后,在編寫 shell 腳本過程中,就不會在單雙引號上出錯了

 

責任編輯:武曉燕 來源: Linux開發那些事兒
相關推薦

2022-11-14 14:51:23

單引號雙引號Linux

2011-05-19 13:45:15

PHP單引號雙引號

2010-07-13 11:25:42

Perl雙引號

2022-03-23 14:04:32

SQL字符串數據類型

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執行效率PHP技巧

2015-09-21 11:45:10

PHP編程效率要點

2011-03-07 15:49:13

2021-06-07 17:51:27

反斜杠引號Python

2009-08-17 16:59:47

C#轉義字符雙引號

2021-02-24 09:43:36

MySQL數據庫雙引號

2009-08-17 14:49:34

C#正則表達式雙引號

2024-11-11 11:51:07

2012-07-19 15:30:00

Linux

2018-11-22 15:50:27

MySQL數據庫雙引號

2019-05-13 15:20:07

Linux括號引號
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久er99热精品一区二区 | 亚洲精选久久 | 一区二区三区四区国产 | 久久影音先锋 | 中文在线亚洲 | 女人夜夜春 | 国产人成在线观看 | 欧美一a | 国产激情在线播放 | 97国产一区二区 | 中文字幕一区在线观看视频 | 天堂中文在线播放 | 国产精品一二区 | 亚洲精品久久久久久一区二区 | 久久久免费精品 | 日韩欧美在线播放 | 亚洲乱码一区二区三区在线观看 | 亚洲一区欧美 | 99中文字幕 | 国产免费一区二区 | 亚洲精品视频一区二区三区 | 99精品久久久久久久 | 岛国av一区二区三区 | 超碰成人免费观看 | 一级黄色毛片免费 | 99久久国产综合精品麻豆 | 精品福利一区二区三区 | 亚洲精品视频免费 | 成人亚洲性情网站www在线观看 | 欧美专区在线视频 | 特级黄一级播放 | 欧美久久不卡 | 国产精品资源在线观看 | 自拍偷拍亚洲一区 | 久热伊人 | 天天操,夜夜爽 | 精品一区av | 蜜桃传媒一区二区 | 国产精品亚洲综合 | 精品久久久久久国产 | 久久国产视频一区 |