bash中的特殊字符
-
注釋
- ; 分號(hào)作為命令行的分隔符
- ;; case終止符
- . 等價(jià)于source
- " 和 ' 雙引號(hào)部分引用,單引號(hào)全引用
- , 連接一系列的算術(shù)操作
- \ 轉(zhuǎn)義符
- / 文件路徑分隔符
- ` 命令替換
- : 空命令等價(jià)于NOP
- ! 取反操作
- 作為文件名匹配
- ? 測(cè)試操作符
-
{} 是參數(shù)替換,
@是位置參數(shù),$? 是退出狀態(tài)碼變量,$$是進(jìn)程id變量,保存所在腳本的進(jìn)程 ID
- () 組命令,作為一個(gè)子shell來(lái)運(yùn)行
- {} 代碼塊,匿名函數(shù)
- [] 條件測(cè)試
- [[]] 測(cè)試表達(dá)式在括號(hào)內(nèi)
- & 后臺(tái)命
- && 與邏輯操作
- || 或操作
- | 管道操作
- 選項(xiàng)前綴
- = 等號(hào)賦值操作
- 加號(hào)
- % 取模
- ~ home目錄
- ~+當(dāng)前工作目錄,$PWD
- ~- $OLDPWD
- ^ 行首
重定向
bash中的變量
- 變量賦值
- =
- let a=8+3
- read -p "input a num: " n
- 命令替換賦值
- $(var)
- 變量類(lèi)型
- 整型
- 字符串
- 局部變量只在代碼塊或者函數(shù)中可見(jiàn)
- 環(huán)境變量將影響用戶接口和shell行為
- 位置參數(shù)
- $0 腳本自身名稱
- $1 第一個(gè)參數(shù)
-
{10}
-
@ 都表示所有的位置參數(shù)
- shift命令會(huì)重新分配位置參數(shù),所有參數(shù)左移一個(gè)位置
- 變量替換 變量的名字就是變量保存值的地方,引用變量的值就叫做變量替換\
bash條件判斷
- if/then結(jié)構(gòu)用來(lái)判斷命令列表的退出狀態(tài)碼是否為0
- [[ ... ]]擴(kuò)展測(cè)試命令 [[
b ]]
- 條件判斷主要判斷的是條件是否為真或者假
- test、/usr/bin/test、[ ]和/usr/bin/[都是等價(jià)命令
- [[ ... ]]擴(kuò)展測(cè)試命令 [[
if [ condition1 ]
then
command1
command2
command3
elif [ condition2 ]
# 與else if一樣
then
command4
command5
else
default-command
fi
使用[[ ... ]]條件判斷結(jié)構(gòu)而不是[ ... ],能夠防止腳本中的許多邏輯錯(cuò)誤
-
測(cè)試操作符
-e 文件存在
-a 文件存在
-f 文件存在,一般文件
-s 文件大小不為0
-d 一個(gè)目錄
-b 塊設(shè)備
-c 字符設(shè)備,鍵盤(pán)/聲卡等
-p 管道
-h 符號(hào)鏈接
-L 符號(hào)鏈接
-S socket
-t 文件描述符關(guān)聯(lián)到一個(gè)終端設(shè)備上
-r 文件可讀
-w 文件可寫(xiě)
-x 文件可執(zhí)行
-g 標(biāo)記了sgid
-u 標(biāo)記了suid
-k 設(shè)置了sticky位
-O 判斷是否是文件owner
-G 文件gid是否和你相同
-nt 新
-ot 舊
-ef 相同文件的硬鏈接
! 反轉(zhuǎn)測(cè)試結(jié)果
-
二元比較操作符:
- -eq
- -ne
- -gt
- -ge
- -lt
- -le if [ "
b" ]
(("
b"))
- -a if [ "exp2" ]
- -o
-
字符串比較:
- = if [ "
b" ]
- ==
- !=
- -z 為null
- -n 不為null
- = if [ "