Linux Bash環境下單引(')、雙引號(")、反引號(`)、反斜杠(\)的小結


在bash中,$、*、?、[、]、’、”、`、\、有特殊的含義。類似於編譯器的預編譯過程,bash在掃描命令行的過程中,會在文本層次上,優先解釋所有的特殊字符,之后對轉換完成的新命令行,進行內核的系統調用。

其中,反引號類似於函數調用,而不僅僅是簡單的文本替換及匹配。

 

命令行中,被單引號引用的部分,其中所有的特殊字符按照普通字符解釋;

雙引號引用的部分,僅解釋$(美元符號)、\(\n \t除外)、`(反引號),解釋后的文本僅按照普通文字處理(同單引號)。

反引號相當於命令替換,引用的部分優先執行,將運行結果替換到外層的命令行文本中;反引號可以嵌套,但是嵌套時內部的反引號必須用\轉義

反斜杠用於命令換行,以及echo -e解釋。

 

 

網上各種文章常見的例子,其中第二行重點介紹一下:

# x=*                    
# echo $x      此行執行了兩次替換,將$x替換為*,之后將*替換為當前目錄下所有文件列表的文本,

          該文本作為參數賦給echo(bash會自動按照優先級,進行多層次替換 )
hello.sh menus.sh misc.sh phonebook tshift.sh
# echo '$x'               $x不進行任何解釋,直接將文本‘$x’作為參數賦給echo
$x
# echo "$x"              $x替換為*,但是由於在雙引號內,*不做替換,因此文本“*”將作為參數賦給echo
*

 

 

 

Tips:

 

大多數Linux Distribution的默認shell為bash,查詢當前主機所有shell可執行如下命令:

$ cat  /etc/shell

 

bash內部集成了40多條命令,通用格式為:

$ 命令 [-選項] [參數]

其中,”-“后為單字符選項,"--"后為完整的單詞選項。一般來說,命令的某項功能(feature),會同時支持單字符選項及對應的多字符選項。

 

在bash中,*、?、[、]有特殊的含義,用於字符匹配。*代表0到多個字符,?代表單個字符。[]用於匹配單個字符,內部用短橫線按照ASCII碼順序標明匹配的字符范圍,或者枚舉所有要匹配的字符。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM