shell基礎知識

2021-09-06 16:38:40 字數 2835 閱讀 3968

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