shell: 命令直譯器 處於系統核心和使用者之間負責解釋命令列的
登入之後預設的shell程式是: /bin/bash
不同的shell內部指令,執行環境會有所區別
常見的shell: /bin/sh /bin/bash /sbin/nologin
#!/bin/bash 是指這個指令碼是用/bin/bash來解釋執行的
其中, #! 是乙個特殊的表示符 後面,跟著解釋此指令碼的shell路徑
除了第一行以外,指令碼中所有的以#開頭的行都是注釋
#!/bin/bash 只能放在第一行,後面都要看成是注釋
如果沒有在指令碼的第一行上加上#!+路徑上這一行,那麼指令碼就會預設當前使用者的shell為指令碼直譯器
bash只是shell中的一種,還有很多其他的shell
如果指令碼沒有執行許可權,出現 permission denied提示 就用 chmod 來賦予其執行許可權
chmod 777 ***x.sh
編寫指令碼的時候,每行一條linux命令,執行指令碼的時候,命令就會按照順序執行,
然後就賦予指令碼檔案可以執行的屬性
執行指令碼檔案有三種命令方式
./***.sh
sh /***x.sh
source /***x.sh
完善的shell指令碼應該包含
指令碼宣告,注釋資訊和可執行語句
重定向操作:
重定向輸入: < 從指定檔案讀取而不是從鍵盤輸入
重定向輸出: > >> 將輸出檔案儲存到指定檔案 用來輸出日誌資訊到指定檔案中 會將原檔案覆蓋
標準錯誤輸出 2> 2>> 將錯誤資訊儲存到指定的檔案 儲存錯誤日誌資訊
&> 將標準輸出和標準錯誤的內容儲存到同乙個檔案中
| 將左側命令的輸出結果,作為右側命令的處理物件
shell變數是擁有者兩層的意思
變數名: 使用固定的名稱,是由使用者定義或者系統預設的
變數值: 是可以根據使用者的設定從而隨著系統環境的變化而變化的
變數的型別: 自定義,環境, 位置, 預定義
其中位置變數就是通過命令列給指令碼程式傳遞引數
預定義變數,是在bash內建的一類變數,不能直接修改的
定義乙個新的變數:
變數名 = 變數值
變數名會以字母或者下劃線開頭,區分大小寫,建議全大寫
檢視變數的值 可以使用echo進行輸出
echo $變數名
賦值時使用引號:
雙引號,允許使用 $符引用其他變數值
單引號的話, 會禁止引用其他變數的值 $視為普通字元
反撇號: 命令替換, 提取命令執行之後的輸出結果
將鍵盤輸入內容為變數賦值
read [-p 「提示資訊」] 變數名
設定變數的作為範圍:
export 變數名
export 變數名 = 變數值
加: + 減:- 乘: * 除 / 取餘%
整數變數的運算:
條件測試:
測試某個表示式是否成立,當條件成立的時候,測試語句的返回值就是 0 否則為其他數值
test 條件表示式
判斷字串
test -n 判斷字串的長度非零
test -z 字串的長度為零
test 字串1 = 字串2 字串相等
test 字串1 != 字串2 字串不等
判斷整數
test 整數1 -eq 整數2 整數相等
test 整數1 -ge 整數2 整數1大於等於整數2
test 整數1 -gt 整數2 整數1大於整數2
test 整數1 -le 整數2 整數1小於等於整數2
test 整數1 -lt 整數2 整數1小於整數2
test 整數1 -ne 整數2 整數1不等於整數2
判斷檔案
test file1 -ef file2 兩個檔案都具有相同的裝置號和節點號
test file1 -nt file2 檔案1 比 檔案2 新
test -d file 檔案是存在的並且是目錄
test -e file 檔案存在
test -f file 檔案存在並且是正規檔案
test -z 進行測試的時候,字串長度為0的時候,結果才會返回1
如果變數數值為0 返回為0
echo $? 標識對剛剛執行的表示式進行判斷
對檔案和目錄進行判斷的時候也可以寫為[-e ***x]
while 測試語句
do命令列序列
done
簡單的shell指令碼
bin bash set x count 1 port 10125 ip 125 pre 100 dir pwd destination home while count le 3 dodir expr pre count reip ip report port mkdir dir sed e s ...
簡單回歸shell指令碼
簡單回歸shell指令碼,可以用於vcs 中自動回歸 使用該指令碼需要先準備乙個test list檔案,儲存testcase名稱,供本指令碼讀取 seed 1 run opt reportstats echo seed seed while read line do echo line firstb...
簡單shell指令碼練習
1 編寫指令碼disk.sh,顯示當前硬碟分割槽中空間利用率最大的值 root centos8 cat desk.sh bin bash echo df grep dev sda tr s cut d f5 sort nr head 1 root centos8 bash desk.sh 11 2 ...