shell指令碼 重定向和變數

2021-10-07 17:05:43 字數 2585 閱讀 2090

一、shell指令碼

作用:介於系統核心與使用者之間,負責解釋命令列;可替代大量重複性輸入,並降低錯誤率。

定義: 將各種linux命令按順序儲存到乙個文字檔案,並新增可執行許可權的檔案

應用場景:重複性操作、批量事務處理、自動化運維、服務執行狀態監控、定時任務執行等

系統支援shell指令碼配置檔案:/etc/shells

使用者的登入shell:登入後預設使用的shell程式,一般為 /bin/bash

不同shell的內部指令、執行環境等會有所區別編寫指令碼**

程式設計規範

第一行宣告指令碼由哪個程式執行

第二行寫入注釋資訊

之後依次寫入命令,每行一條命令

管道操作符號」|」:將左側的命令輸出結果,作為右側命令的處理物件

可結合awk命令進一步過濾

如:grep 「/bin/bash」 /etc/passwd | awk -f: 『』

awk 作用是以「:」為分隔符、輸出第乙個和第七個區域的字串,-f:指定分割符號,未指定為空格或製表符

互動式硬體裝置

標準輸入:從該裝置接收使用者輸入的資料 標準standard 輸入input

標準輸出:通過該裝置向使用者輸出資料 輸出output

標準錯誤:通過該裝置報告執行出錯資訊 錯誤 error

型別 裝置檔案 檔案描述編號 預設裝置

標準輸入 /dev/stdin 0 鍵盤

標準輸出 /dev/stdout 1 顯示器

標準錯誤輸出 /dev/stderr 2 顯示器

二、變數

變數的作用:為靈活管理linux系統提供特定引數,有兩層意思

變數名:使用固定的名稱,由系統預設或使用者定義

變數值:能夠根據使用者設定、系統環境的變化而變化

變數的型別

a) 自定義變數:由使用者自己定義、修改和使用

b) 環境變數:由系統維護,用於設定工作環境

c) 位置變數:通過命令列給指令碼程式傳遞引數

d) 預定義變數:bash中內建的一類變數,不能直接修改

定義乙個新的變數

a) 格式:「變數名=變數值」

變數名以字母或下劃線開頭,區分大小寫,建議全大寫,名稱中不能有特殊字元

b) 檢視變數的值:echo 變數名

,可同時

檢視多個

變數值,

以空格分

開c)引

用變數的

值:變數

名前

加變數名,可同時檢視多個變數值,以空格分開 c) 引用變數的值:變數名前加

變數名,可同

時檢視多

個變數值

,以空格

分開c)

引用變數

的值:變

量名前加

,如果易混淆,將變數名用{}括起來

賦值時使用引號

a) 雙引號:允許通過符號引

用其他變

量值b)

單引號:

禁止引用

其他變數

值,

符號引用其他變數值 b) 單引號:禁止引用其他變數值,

符號引用其他

變數值b

)單引號

:禁止引

用其他變

量值,視為普通字元

c) 反撇號:命令替換,提取命令執行後的輸出結果,$()命令可巢狀處理

read -p 「提示資訊」 變數名 可實現簡單互動

-t 設定等待時間(s)

設定變數的作用範圍,預設為區域性變數,只在當前shell生效

格式1:export 變數名 …

格式2:export 變數名=變數值 …

a) —— 兩種格式可以混合使用

[root@localhost ~]# echo "$product katex parse error: expected 'eof', got '#' at position 38: …ot@localhost ~]#̲ export product…product $version"子程式引用全域性變數

benet 6.0

[root@localhost ~]# exit

整數變數的運算:運算子與變數間至少乙個空格,/bin/bash下只能識別整數

常用運算子

加法運算:+

減法運算: -

乘法運算: *

除法運算: /

求模(取餘)運算: %

環境變數:由系統提前建立,用來設定使用者的工作環境

配置檔案: /etc/profile、~/.bash_profile

常見的環境變數pwd、path、user 、shell、home

新增path變數,使可直接執行檔案【path=」$path:/root」】

位置變數:表示為 $n,n為1~9之間的數字

預定義變數,只能使用

$#:命令列中位置變數的個數

$*:所有位置變數的內容

$?:上一條命令執行後返回的狀態,當返回狀態值為0時表示執行正常,非0值表示執行異常或出錯

$0:當前執行的程序/程式名

三、指令碼應用思路

確定命令操作(設計並執行任務)

編寫shell指令碼(組織任務過程)

設定計畫任務(控制時間,呼叫任務指令碼)

shell指令碼 輸入和輸出重定向

大多數 unix 系統命令從你的終端接受輸入並將所產生的輸出傳送回到您的終端。乙個命令通常從乙個叫標準輸入的地方讀取輸入,預設情況下,這恰好是你的終端。同樣,乙個命令通常將其輸出寫入到標準輸出,預設情況下,這也是你的終端。外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img 1jjus...

shell 指令碼命令 重定向

希望想將在終端輸出的資訊儲存到檔案,直接在命令後面加上 filename即可 希望想將在終端輸出的資訊儲存到檔案,直接在命令後面加上 filename即可 shell允許開啟至多10個檔案,檔案描述符從0,1,2,9 在當前路徑下 執行.sh 檔案 test.sh 如果沒有其許可權 ch mod x...

Linux重定向與shell變數

4種執行bash的命令方法 先執行 父 的bash小,後執行的 子 bash大 2 bas 件名 父子bash 3 bash bas 件名 父子bash,bash bash 命令在第二個bash 子 中執行 4 chmod x bas 件名 將變為可執行檔案,將檔案變成可執行檔案 bas 件名 父子...