shell指令碼簡單命令

2021-10-02 22:49:39 字數 2228 閱讀 7513

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 ...