1 自動化 運維
寫shell指令碼完成運維活動
2 shell
1 定義:
命令直譯器(應用程式和作業系統之間的介面)
2 分類:
狹義上指的是命令列shell(linux下的bash)
3 檢視shell資訊
檢視當前系統shell版本:
echo $shell
檢視系統相容性支援的其他版本:
cat /etc/shells
4 shell指令碼
指令碼執行方式:
命令寫到檔案中,直接執行檔案(shell指令碼---》shell命令們)
3 建立shell指令碼:
1 建立工具:記事本(vim)
2 指令碼命令:
1 名稱有意義
2 .sh結尾(給程式設計師看的)
3 指令碼內容
1 首行指定直譯器#!/bin/bash
2 命令從上到下羅列
4 注釋
單行注釋: # 開頭
多行注釋: :《字元 ... 字元 (將字元包含的內容重定向到啥都不幹)
4 執行shell指令碼
1 bash 指令碼名(先啟動子程序名字叫bash,在子程序中執行指令碼內容)
直譯器:bash
2 ./指令碼名 (先啟動子程序名字叫指令碼名,在子程序中執行指令碼內容)
直譯器:#!指定的直譯器-----》系統預設shell
3 source 指令碼名 (直接在當前shell執行指令碼內容---》跟指令碼內容複製貼上執行的效果相同)
直譯器:當前shell
5 變數
1 變數定義:
普通變數:
1 變數名=變數值 (變數值不能有特殊字元)
2 變數名='變數值' (變數值作為整體)
3 變數名="變數值" (變數套變數套變數)
命令變數:(命令的輸出作為變數值賦給變數名)
變數名=`命令`
變數名=$(命令)
命令變數的值在定義時確定
2 變數訪問
1 $變數名
2 "$變數名" (保證變數值是字串)
3 $ (限定變數名範圍)
4 "$" (推薦使用)
3 刪除變數:
unset 變數名:
unset lang (修改字元編碼)
4 變數分類
1 本地變數
**定義**訪問
2 全域性變數(環境變數)
1 檢視當前全域性變數:
env2 定義全域性變數:
1,先定義後轉換
變數名=值
export 變數
2 二合一
export 變數名=值
3 生效範圍
當前shell和子shell生效
4 要想全部環境都生效:
1 修改~/.bashrc (開啟終端後,系統會先source執行該檔案)
source 執行~/.bashrc立即生效
開啟新shell也生效
2 修改/etc/profile(所有使用者生效,系統啟動後,會source執行該檔案,後續使用者shell都繼承自初始shell')
source 執行/etc/profile 立即生效
重啟計算機也生效
3 內建變數
1 指令碼相關內建變數
$0 指令碼名
$$ 執行指令碼的程序號
$n 第n個命令列引數
$# 引數個數
$? 上一條指令的返回值(0成功,非0失敗---》若上一條指令是執行指令碼,則獲取指令碼最後一條命令的返回值)
2 字串擷取
$尾部擷取:
$3 預設值
$若變數存在則輸出變數值。否則輸出預設值
$若變數存在則輸出提示資訊,否則,啥都不輸出
6 表示式
將邏輯轉化成控制
1 測試語句
test 條件
[ 條件 ] (方括號內左右各有乙個空格)
1 數值比較:
n1 -eq n2 相等
n1 -gt n2 大於
n1 -ge n2 大於等於
n1 -lt n2 小於
n1 -le n2 小於等於
n1 -ne n2 不等於
2 字串比較
== !=
比較操作符左右各有乙個空格
2 邏輯表示式
命令1 && 命令2 (1成功則執行2)
命令1 || 命令2 (1失敗則執行2)
3 檔案表示式
-f 判斷是否是檔案
-d 判斷是否是目錄
-x 判斷是否可執行 (一般目錄可執行)
4 計算表示式(支援整數運算)
$((計算過程))
let 等式
7 常見符號
1 重定向
命令的輸出放到檔案裡
應用程式的輸出:
1 標準輸出(standard output)---》程式正確執行時的輸出
2 標準錯誤(standard err)------》程式異常時的輸出
1 分別重定向:
bash 5-chongdingxiang.sh > res.log 2>err.log
2 合併重定向
bash 5-chongdingxiang.sh > res.log 2>&1
3 丟棄:
bash 5-chongdingxiang.sh > /dev/null 2>&1
2 管道符
命令1 | 命令2
(1的標準輸出作為2的輸入---》命令2要有輸入)
3 後台展示符
命令 & (將命令放到後台執行,釋放當前終端)
SHELL 基礎知識
1 什麼是shell?shell的本意是 殼 的意思,其實已經很形象地說明了shell在linux系統中的作用。shell就是圍繞在linux核心之外的乙個 殼 程式,使用者在作業系統上完成的所有任務都是通過shell與linux系 統核心的互動來實現的。shell本身是乙個c語言編寫的程式,是使用...
shell 基礎知識
預設變數 傳入指令碼的命令列引數個數 所有命令列引數值,在各個引數值之間留有空格 0 命令本身 shell檔名 1 第乙個命令列引數 2 第二個命令列引數 區域性變數 在變數首次被賦值時加上local 關鍵字可以宣告乙個區域性變數,例s3 bin bash hello var1 echo hello...
shell 基礎知識
預設變數 傳入指令碼的命令列引數個數 所有命令列引數值,在各個引數值之間留有空格 0 命令本身 shell檔名 1 第乙個命令列引數 2 第二個命令列引數 區域性變數 在變數首次被賦值時加上local 關鍵字可以宣告乙個區域性變數,例s3 bin bash hello var1 echo hello...