Shell指令碼常識 (特殊字元)

2021-06-29 08:09:31 字數 1695 閱讀 9557

shell中的特殊字元有 

1、$ 美元符 

2、\ 反斜槓 

3、` 反引號 

4、" 雙引號 

5、< ,>;,*,?,[,] 

下面我一一舉列說明 

一、$符號 

1、echo $? 顯示的是上一條指令退出狀態 

2、echo "$?" 效果同上 

3、echo '$?' 顯示的是$? 

4、echo \$? 顯示的是$? 

5、echo "\$?" 顯示的是$? 

大家可能已經看出 $符號在雙引號中具有特殊意義 雙引號對$符號不起作用 

而單引號可以將特殊字元的的特殊意義遮蔽掉,使其能顯示為字元本身,反斜 

槓也可以將特殊字元的特殊含義遮蔽掉,使特殊字元失去特殊含義。 

二、\ 反斜槓 

反斜槓的作用是將特殊符號字元的特殊含義遮蔽掉,使其還是原字元 

a=1234 

echo \$a 顯示為$a 如果不加\將顯示為1234 

echo \` 顯示為` 

echo \" 顯示為雙引號 

echo \\ 顯示為\ 

三、` 反引號 

反引號的功能是命令替換,將反引號中的字串做為命令來執行,我們在用shell程式設計時經常用的到 將系統命令的執行結果賦給乙個變數 

a=`date` 

echo $a 顯示的不是date而是當時的時間串 

比如有一檔案a的內容如下  

abcdefg 

1234456 

abcdefg 

b=`cat a|grep 234`? # 檢索檔案a中含有字串234的行 

echo $b 將顯示為1234456 

echo "$b" 將顯示為什麼? 

echo "\$b" 將顯示為什麼?讀者自己試試 

四、" 雙引號 

在系統中有些特殊字元,為避免引用這些特殊字元 往往用雙引號或單引號將這些特殊字元引起來,使其不具有特殊含義。 

但有一部分特殊字元在引號中還是具有特殊含義,用雙引號引起來是不起作用的。本文中所列的前四個特殊字元在雙引號中還是特殊字元。為了使其不具有特殊含義一是用單引號引進來二是用\反斜線使其失去作用。 

比如我們想原樣輸出這些特殊字元 

echo """ 

echo "$" 

echo "\" 

echo "`" 

以上不是你所期望的結果,因為雙引號對它們不起作用,你只能這樣才能輸出這些特殊字元的原形 

echo '"' 

echo '$' 

echo '\' 

echo '`' 

或 echo "\"" 

echo "\$" 

echo "\\" 

echo "\`" 

將分別顯示為 " $ \ ` 

五、其它特殊字元 

大家注意到 除了前四個特殊字元外 我將其它的特殊字元都放在一塊,這是因為前四個特殊字元在雙引號中還是具有特殊含義,所以單獨拿出來講,除此以外的特殊字元如果你要輸出這些特殊字元的原形,你就可以用雙引號或單引號引起來使其失去特殊含義。 

< ,>;,*,?,[,]對shell有特殊含義 但你可以用雙引號引起來輸入這些原形 

講了這麼多大家是不是已經注意到所有的特殊字元在單引號中失去特殊含義,如果你要輸出特殊字元原形但又記不清那些特殊字元在雙引號中不能輸出原形,建議你乾脆用單引號引起來。

shell指令碼常識

1 shell指令碼是什麼 它是必需的嗎?乙個shell指令碼是乙個文字檔案,包含乙個或多個命令。作為系統管理員,我們經常需要使用多個命令來完成一項任務,我們可以新增這些所有命令在乙個文字檔案 shell指令碼 來完成這些日常工作任務。2 什麼是預設登入shell,如何改變指定使用者的登入shell...

shell指令碼程式設計 特殊字元

shell中除了普通字元外,還有很多具有特殊含義和功能的字元 1.萬用字元 任意長度的字串 匹配任一單個字元 匹配其中的任意乙個字元,例如 abc 匹配a或b或c,也可這樣表示 a z 但 在外只是乙個普通字元,和?在中也變成了普通字元.2.引號 單引號 稱為 強引用 或 全引用,在 中的所有字元都...

Shell指令碼特殊字元 轉義字元輸出

一些字母前加 來表示常見的那些不能顯示的ascii字元,如 0,t,n等,就稱為轉義字元,因為後面的字元,都不是它本來的ascii字元意思。輸入 a輸出警告音 b退格,即向左刪除乙個字元 c取消輸出行末的換行符,和 n選項一致 eesc f換頁符 n換行 r回車 t製表,即tab v垂直製表符 0n...