1. 程式人生 > 實用技巧 >bash特殊字元-1

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.美元符號($)

變數替換