Bash tips - condition statements

bash中的特殊字符

  • 注釋

  • ; 分號(hào)作為命令行的分隔符
  • ;; case終止符
  • . 等價(jià)于source
  • " 和 ' 雙引號(hào)部分引用,單引號(hào)全引用
  • , 連接一系列的算術(shù)操作
  • \ 轉(zhuǎn)義符
  • / 文件路徑分隔符
  • ` 命令替換
  • : 空命令等價(jià)于NOP
  • ! 取反操作
    • 作為文件名匹配
  • ? 測(cè)試操作符
  • 變量替換,用于引用變量?jī)?nèi)容{} 是參數(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ù)
    • 9之后就必須用大括號(hào){10}
    • *和@ 都表示所有的位置參數(shù)
    • shift命令會(huì)重新分配位置參數(shù),所有參數(shù)左移一個(gè)位置
    • 變量替換 變量的名字就是變量保存值的地方,引用變量的值就叫做變量替換\

bash條件判斷

  • if/then結(jié)構(gòu)用來(lái)判斷命令列表的退出狀態(tài)碼是否為0
    • [[ ... ]]擴(kuò)展測(cè)試命令 [[ a -ltb ]]
    • 條件判斷主要判斷的是條件是否為真或者假
    • test、/usr/bin/test、[ ]和/usr/bin/[都是等價(jià)命令
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 [ "a" -le "b" ]
      • (("a" >= "b"))
        - -a if [ "exp1" -a "exp2" ]
        - -o

    • 字符串比較:

      • = if [ "a" = "b" ]
      • ==
      • !=
      • -z 為null
      • -n 不為null
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,737評(píng)論 0 5
  • .bat腳本基本命令語(yǔ)法 目錄 批處理的常見(jiàn)命令(未列舉的命令還比較多,請(qǐng)查閱幫助信息) 1、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,542評(píng)論 1 19
  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 6,356評(píng)論 0 10
  • linux資料總章2.1 1.0寫(xiě)的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,360評(píng)論 2 33
  • 你說(shuō):此生有你一人足矣, 我答:一生一世一雙人。 你說(shuō):若現(xiàn)在我一無(wú)所有,你還會(huì)要我嗎? 我答:若現(xiàn)在你一...
    xl且聽(tīng)風(fēng)吟閱讀 311評(píng)論 0 0

友情鏈接更多精彩內(nèi)容