亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Bash?Shell中單引號(hào)和雙引號(hào)的區(qū)別小結(jié)

 更新時(shí)間:2024年11月01日 10:36:10   作者:黑風(fēng)風(fēng)  
在Bash中,單引號(hào)和雙引號(hào)都能定義字符串,但它們處理變量擴(kuò)展、特殊字符的方式不同,本文就來(lái)介紹一下Bash?Shell中單引號(hào)和雙引號(hào)的區(qū)別小結(jié),感興趣的可以了解一下

在Bash Shell中,單引號(hào)(')和雙引號(hào)(")都用于定義字符串,但它們之間有一些重要的區(qū)別。這些區(qū)別影響字符串的解釋方式,變量的擴(kuò)展,以及特殊字符的處理。

單引號(hào)

字面值:在單引號(hào)中的所有字符都會(huì)被視為字面值,即它們的特殊含義不會(huì)被解釋。例如,$用于變量擴(kuò)展,但在單引號(hào)中它只會(huì)被視為普通的美元符號(hào)。

echo '$HOME'

上面的命令將輸出$HOME,而不是展開(kāi)為環(huán)境變量HOME的值。

不允許嵌套單引號(hào):?jiǎn)我?hào)內(nèi)不能包含其他單引號(hào),即使它們被轉(zhuǎn)義。要在單引號(hào)字符串中包含單引號(hào),你需要使用一種特殊的語(yǔ)法:

echo 'It'\''s a test'

這將輸出It's a test。

單引號(hào) (') 用于保留字符的字面含義,特殊字符在單引號(hào)里面,都會(huì)變?yōu)槠胀ㄗ址?,例?nbsp;*、$、反斜杠 (\) 等。

(base) yongqiang@yongqiang:~/bash_work$ ls -l
total 0
-rwxr-xr-x 1 yongqiang yongqiang 231 May 13 23:24 bash_script.sh
-rw-r--r-- 1 yongqiang yongqiang   0 May 15 09:31 yongqiang.txt
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo *
bash_script.sh yongqiang.txt
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo '*'
*
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo "*"
*
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo $
$
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo '$'
$
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo "$"
$
(base) yongqiang@yongqiang:~/bash_work$

(base) yongqiang@yongqiang:~/bash_work$ echo $PATH
/home/yongqiang/bin:/home/yongqiang/miniconda3/bin:/home/yongqiang/miniconda3/condabin:......:/home/yongqiang/software/platform-tools/
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo '$PATH'
$PATH
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo $PATH
/home/yongqiang/bin:/home/yongqiang/miniconda3/bin:/home/yongqiang/miniconda3/condabin:......:/home/yongqiang/software/platform-tools/
(base) yongqiang@yongqiang:~/bash_work$

(base) yongqiang@yongqiang:~/bash_work$ echo $USER
yongqiang
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo '$USER'
$USER
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo "$USER"
yongqiang
(base) yongqiang@yongqiang:~/bash_work$

(base) yongqiang@yongqiang:~/bash_work$ echo $((5 + 1))
6
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo '$((5 + 1))'
$((5 + 1))
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo "$((5 + 1))"
6
(base) yongqiang@yongqiang:~/bash_work$

(base) yongqiang@yongqiang:~/bash_work$ echo $(echo $USER)
yongqiang
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo '$(echo $USER)'
$(echo $USER)
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo "$(echo $USER)"
yongqiang
(base) yongqiang@yongqiang:~/bash_work$

反斜杠在單引號(hào)中變成了普通字符。如果在單引號(hào)之中,還要使用單引號(hào),不能使用轉(zhuǎn)義,需要在外層的單引號(hào)前面加上一個(gè)($),然后再對(duì)里層的單引號(hào)轉(zhuǎn)義。

(base) yongqiang@yongqiang:~/bash_work$ echo '\'
\
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo 'It's me!'
bash: !': event not found
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo 'It\'s me!'
bash: !': event not found
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo $'It\'s me!'
It's me!
(base) yongqiang@yongqiang:~/bash_work$

在雙引號(hào)之中使用單引號(hào)。

(base) yongqiang@yongqiang:~/bash_work$ echo "It's me!"
It's me!
(base) yongqiang@yongqiang:~/bash_work$

雙引號(hào)

變量擴(kuò)展:雙引號(hào)中的變量會(huì)被擴(kuò)展,即$var會(huì)被替換為變量var的值。

name="John"
echo "Hello, $name"

上面的命令將輸出Hello, John。

特殊字符解釋:雙引號(hào)中的特殊字符,如\n(換行)和\t(制表符),會(huì)被解釋。

echo "Line 1\nLine 2"

這將輸出兩行文本,而不是一行。

感嘆號(hào)問(wèn)題:雙引號(hào)中的感嘆號(hào)!可能會(huì)引起歷史擴(kuò)展問(wèn)題,這需要特別注意。

雙引號(hào) (") 比單引號(hào) (') 寬松。在雙引號(hào)中,反引號(hào) (`)、$、反斜杠 (\) 三個(gè)特殊字符會(huì)被 Bash 自動(dòng)擴(kuò)展。$ 符號(hào)用于引用變量,反引號(hào) (`) 用于執(zhí)行子命令。反斜杠 (\) 在雙引號(hào)之中用來(lái)轉(zhuǎn)義。

(base) yongqiang@yongqiang:~/bash_work$ echo ?
?
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo '?'
?
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo "?"
?
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo $SHELL
/bin/bash
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo '$SHELL'
$SHELL
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo "$SHELL"
/bin/bash
(base) yongqiang@yongqiang:~/bash_work$

使用反斜杠,在雙引號(hào)之中插入雙引號(hào),或者插入反斜杠本身。

(base) yongqiang@yongqiang:~/bash_work$ echo '\\'
\\
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo "\\"
\
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo ""yongqiang""
yongqiang
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo "\"yongqiang\""
"yongqiang"
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo "It's me!"
It's me!
(base) yongqiang@yongqiang:~/bash_work$

Bash 正常情況下會(huì)將換行符解釋為命令結(jié)束,但是換行符在雙引號(hào)之中就失去了這種特殊作用,只用來(lái)?yè)Q行??梢暂斎攵嘈?,echo 命令會(huì)將換行符原樣輸出,顯示的時(shí)候正常解釋為換行。

(base) yongqiang@yongqiang:~/bash_work$ echo "yong
> qiang"
yong
qiang
(base) yongqiang@yongqiang:~/bash_work$

如果文件名中包含空格,需要使用雙引號(hào)或單引號(hào),將文件名放在里面。

(base) yongqiang@yongqiang:~/bash_work$ ls -l
total 0
-rwxr-xr-x 1 yongqiang yongqiang 106 May 13 20:11 bash_script.sh
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ touch "yong qiang.txt"
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ ls -l
total 0
-rwxr-xr-x 1 yongqiang yongqiang 106 May 13 20:11  bash_script.sh
-rw-r--r-- 1 yongqiang yongqiang   0 May 13 21:27 'yong qiang.txt'
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ ls -l "yong qiang.txt"
-rw-r--r-- 1 yongqiang yongqiang 0 May 13 21:27 'yong qiang.txt'
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ ls -l 'yong qiang.txt'
-rw-r--r-- 1 yongqiang yongqiang 0 May 13 21:27 'yong qiang.txt'
(base) yongqiang@yongqiang:~/bash_work$

單引號(hào) (') - 雙引號(hào) (")

對(duì)于普通字符串或文本,單引號(hào)和雙引號(hào)的作用相同。

(base) yongqiang@yongqiang:~/bash_work$ echo "yongqiang"
yongqiang
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo 'yongqiang'
yongqiang
(base) yongqiang@yongqiang:~/bash_work$

當(dāng)打印已定義的變量時(shí),需要使用雙引號(hào),使用單引號(hào)將被視為普通字符。

(base) yongqiang@yongqiang:~/bash_work$ NAME="yongqiang"
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo $NAME
yongqiang
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo '$NAME'
$NAME
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo "$NAME"
yongqiang
(base) yongqiang@yongqiang:~/bash_work$

(base) yongqiang@yongqiang:~/bash_work$ NAME='yongqiang'
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo $NAME
yongqiang
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo '$NAME'
$NAME
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo "$NAME"
yongqiang
(base) yongqiang@yongqiang:~/bash_work$

單引號(hào) ( ' ) 和雙引號(hào) ( " ) 可以保存多個(gè)連續(xù)的空格。

(base) yongqiang@yongqiang:~/bash_work$ echo "yong    qiang"
yong    qiang
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ echo 'yong    qiang'
yong    qiang
(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ cat ./bash_script.sh
#!/bin/bash

echo "start"
echo
echo "Hello, world!"

NAME="yongqiang!"
echo $NAME
echo
echo "111!"

COMMENT="Hello, $NAME"
echo $COMMENT
echo
echo "222!"

COMMENT='Hello, $NAME'
echo $COMMENT

echo "Hello, world!"
echo
echo "end"

(base) yongqiang@yongqiang:~/bash_work$
(base) yongqiang@yongqiang:~/bash_work$ ./bash_script.sh
start

Hello, world!
yongqiang!

111!
Hello, yongqiang!

222!
Hello, $NAME
Hello, world!

end
(base) yongqiang@yongqiang:~/bash_work$

到此這篇關(guān)于Bash Shell中單引號(hào)和雙引號(hào)的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)Shell單引號(hào)和雙引號(hào)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • shell腳本實(shí)現(xiàn)多進(jìn)程運(yùn)行的方法示例

    shell腳本實(shí)現(xiàn)多進(jìn)程運(yùn)行的方法示例

    這篇文章主要給大家分享了shell腳本實(shí)現(xiàn)多進(jìn)程運(yùn)行的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-06-06
  • Vim命令合集

    Vim命令合集

    這篇文章主要介紹了Vim命令合集的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-10-10
  • 慎用rm -rf /與 rm -rf /* 推薦使用mv代替rm

    慎用rm -rf /與 rm -rf /* 推薦使用mv代替rm

    本文主要介紹了慎用rm -rf /與 rm -rf /* 推薦使用mv代替rm,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Linux?shell中$(())、$()、``與${}的區(qū)別

    Linux?shell中$(())、$()、``與${}的區(qū)別

    本文主要介紹了Linux?shell中$(())、$()、``與${}的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Linux文件操作命令詳解與實(shí)戰(zhàn)

    Linux文件操作命令詳解與實(shí)戰(zhàn)

    Linux 是一個(gè)文件為核心的操作系統(tǒng),文件的操作貫穿了系統(tǒng)管理和開(kāi)發(fā)的方方面面,從創(chuàng)建、修改、查找文件到權(quán)限管理和壓縮操作,Linux 提供了豐富的命令支持,本文將深入解析 Linux 文件操作的常用命令,幫助讀者全面掌握其用法及應(yīng)用場(chǎng)景,需要的朋友可以參考下
    2024-12-12
  • 淺談Linux 二進(jìn)制包安裝MySQL的一些問(wèn)題

    淺談Linux 二進(jìn)制包安裝MySQL的一些問(wèn)題

    下面小編就為大家?guī)?lái)一篇淺談Linux 二進(jìn)制包安裝MySQL的一些問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • 在Linux中檢查文件大小的4種常用方法

    在Linux中檢查文件大小的4種常用方法

    在 Linux 操作系統(tǒng)中,經(jīng)常需要檢查文件的大小,無(wú)論是管理文件系統(tǒng)空間,還是確定文件傳輸?shù)拇笮∠拗?了解文件大小是非常重要的,本文將介紹 4 種常用的方法,幫助你在 Linux 中檢查文件的大小,需要的朋友可以參考下
    2023-09-09
  • Linux?中?ls?命令詳解

    Linux?中?ls?命令詳解

    這篇文章主要介紹了Linux?中?ls?命令詳解的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • 如何使用Shell腳本掩蓋Linux服務(wù)器上的操作痕跡(推薦)

    如何使用Shell腳本掩蓋Linux服務(wù)器上的操作痕跡(推薦)

    這篇文章主要介紹了使用Shell腳本掩蓋Linux服務(wù)器上的操作痕跡,需要的朋友可以參考下
    2017-12-12
  • shell腳本從SVN推送到多臺(tái)服務(wù)器的代碼

    shell腳本從SVN推送到多臺(tái)服務(wù)器的代碼

    shell 腳本從SVN推送到多臺(tái)服務(wù)器,需要的朋友可以參考下
    2013-02-02

最新評(píng)論