bash特殊字元-1
bash特殊字元
1.命令分隔符
使用分號(;)可以在同一行上寫兩個或兩個以上的命令。
2.終止case選項(雙分號)
使用雙分號(;;)可以終止case選項。
3.(.)點號
等價於 source 命令
4.雙引號(")
"STRING" 將會阻止(解釋)STRING中大部分特殊的字元。後面的實驗會詳細說明。
5.單引號(')
'STRING' 將會阻止STRING中所有特殊字元的解釋,這是一種比使用"更強烈的形式。
6.斜線(/)
檔名路徑分隔符。分隔檔名不同的部分。也可以用來作為除法算術操作符。注意在linux中表示路徑的時候,許多個/
跟一個/
是一樣的。
7.反斜線(\)
一種對單字元的引用機制。\X 將會“轉義”字元X。這等價於"X",也等價於'X'。\ 通常用來轉義雙引號(")和單引號('),這樣雙引號和單引號就不會被解釋成特殊含義了。
- 符號 說明
- \n 表示新的一行
- \r 表示回車
- \t 表示水平製表符
- \v 表示垂直製表符
- \b 表示後退符
- \a 表示"alert"(蜂鳴或者閃爍)
- \0xx 轉換為八進位制的ASCII碼, 等價於0xx
- " 表示引號字面的意思
轉義符也提供續行功能,也就是編寫多行命令的功能。
每一個單獨行都包含一個不同的命令,但是每行結尾的轉義符都會轉義換行符,這樣下一行會與上一行一起形成一個命令序列。
8.反引號(`)命令替換,反引號中的命令會優先執行
9.冒號(:)
1)空命令
等價於“NOP”(no op,一個什麼也不幹的命令)。也可以被認為與shell的內建命令true作用相同。“:”命令是一個bash的內建命令,它的退出碼(exit status)是(0)。
如:
#!/bin/bash
while :
do
echo "endless loop"
done
等價於
#!/bin/bash
while true
do
echo "endless loop"
done
可以在 if/then 中作佔位符:
#!/bin/bash
condition=5
if [ $condition -gt 0 ] #gt表示greater than,也就是大於,同樣有-lt(小於),-eq(等於)
then : # 什麼都不做,退出分支
else
echo "$condition"
fi
2)變數擴充套件/子串替換
在與>
重定向操作符結合使用時,將會把一個檔案清空,但是並不會修改這個檔案的許可權。如果之前這個檔案並不存在,那麼就建立這個檔案。
$ : > test.sh # 檔案“test.sh”現在被清空了
# 與 cat /dev/null > test.sh 的作用相同
# 然而,這並不會產生一個新的程序, 因為“:”是一個內建命令
在與>>
重定向操作符結合使用時,將不會對預先存在的目標檔案 (: >> target_file)產生任何影響。如果這個檔案之前並不存在,那麼就建立它。
也可能用來作為註釋行,但不推薦這麼做。使用 # 來註釋的話,將關閉剩餘行的錯誤檢查,所以可以在註釋行中寫任何東西。然而,使用 : 的話將不會這樣。如:
$ : This is a comment that generates an error,( if [ $x -eq 3]
":"還用來在/etc/passwd
和$PATH
變數中做分隔符,如:
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/sbin:/usr/sbin:/usr/games
10.美元符號($)
變數替換