shell指令碼一

2021-08-20 19:56:05 字數 3290 閱讀 5235

shell

手工部署專案

自動化部署專案

1、shell簡介

什麼是shell

shell是乙個命令直譯器,是乙個程式/bin/bash,解釋linux的命令

shell互動式命令使用

開啟終端,一行行敲命令

shell指令碼

一系列的命令組成的檔案,結合shell語法

shell指令碼注釋

1、單行注釋  #

2、多行注釋

:<< 字元  。。。。。。

字元:<< b  。。。。。。

。。。。。。

b2、指令碼執行方式

bash /path/to/script-name 或 /bin/bash /path/to/script-name (強烈推薦使用)

/path/to/script-name 或 ./script-name (當前路徑下執行指令碼)

source script-name 或 . script-name (注意「.「點號)

3、變數

本地變數

方式一: name=wang

變數名=變數值

重點:變數值必須是乙個整體,中間沒有特殊字元

方式二:name='wang'

變數名='變數值'

重點:我看到的內容,我就輸出什麼內容

方式三:name="wang"

變數名="變數值"

區別:myname='is $name' 不會解析變數

myname="is $name" 會解析變數

(重點)shell執行環境

開乙個終端是乙個shell環境

bash執行乙個shell指令碼,會在新的shell環境執行

source 執行指令碼時,不會新開shell環境

能與當前終端共享shell環境

(重點)命令變數

1、 name=`ls`

2、 name=$(pwd)

注意:把命令執行的結果賦值給變數

全域性變數

1、name=wang

export name

2、export name=wang

如果想讓變數在任何終端都能使用,修改檔案

vi ~/.bashrc

追加export name=wang

source ~/.bashrc

重啟作業系統

變數檢視

"$"場景:

標準使用方式

取消變數

unset 變數名

4、內建變數(重點)

$0 獲取當前執行的shell指令碼檔名

$n 獲取當前執行的shell指令碼的第n個引數值,n=1..9,當n為0時表示指令碼的檔名,如果n大於9就要用大 括號括起來$

$# 獲取當前shell命令列中引數的總個數

$? 獲取執行上乙個指令的返回值(0為成功,非0為失敗)

如果執行的是乙個指令碼

bash hh.sh

$?返回的是hh.sh中最後一條命令的結果

字串精確擷取

格式:$

示例:$ 從第1個字元開始,擷取5個字元

$ 從第6個字元開始,擷取5個字元

$ 從倒數第6個字元開始,擷取之後的3個字元

預設值$

name=''

$ 返回 hh

name='wang'

$ 返回 wang

$name=''

$ 返回 hh

name='wang'

$ 返回 hh

5、測試語句(重點)

1、test 1 = 2

2、[ 1 = 2 ]

注意:=左右必須有空格,左右必須有空格

使用echo $? 返回0代表成功,1代表失敗

6、條件表示式(重點)

命令1 && 命令2 

如果命令1執行成功,那麼我才執行命令2 -- 夫唱婦隨

如果命令1執行失敗,那麼命令2也不執行

命令1 || 命令2

如果命令1執行成功,那麼命令2不執行 -- 對著幹

如果命令1執行失敗,那麼命令2執行

[ -f hello.sh ] 判斷是否是檔案

[ -d hello.sh ] 判斷是否是資料夾

[ -x hello.sh ] 判斷是否可執行

[ -x hello.sh ] && [ -f hello.sh ] 判斷是否是可執行檔案

數值比較

n1 -eq n2            相等

n1 -gt n2            大於

n1 -lt n2            小於

n1 -ne n2            不等於

字串比較

str1 == str2 str1和str2字串內容一致

str1 != str2 str1和str2字串內容不一致,!表示相反的意思

數值計算

1、$((a+b))

2、let a=$a+1

7、符號

重定向命令 > 檔案

把命令執行的結果中正確的資訊放到檔案中

任何命令執行右兩種結果,1代表正確,2代表錯誤

bash hh.sh >/dev/null 2>&1 &

前面&符號代表引用,後面&符號代表後台執行

linux 四劍客

grep 查詢檔案內容

grep -nr hello .

find 根據關鍵字查詢檔案

find . -name '*sh'

sed 行編輯工具,以行為單位

替換sed -i "2s#查詢的內容#替換的內容#1" sed.txt

查詢第二行,只改找到的第乙個值

sed -i "s#查詢的內容#替換的內容#g" sed.txt

s前不指定行是處理所有行,列寫g代表處理所有列

插入sed -i "1i\hello" sed.txt

在第1行前插入一行

追加sed -i "1,3a\hello" sed.txt

在第1,2,3行後面都新增一行

刪除sed -i "3d" sed.txt

刪除第三行

awk 分析工具,按行處理

預設把資料按照空格或tab,拆分資料

awk 'nr==1 ' awk.txt

nr==1 代表只處理第一行

awk -f ':' '' awk2.txt

-f ':' 代表把資料按照:拆分

awk 'begin ' awk2.txt

fs代表輸入的資料按照什麼拆分,ofs代表輸出的內容的分隔符

請繼續** shell指令碼二鏈結

Shell指令碼 一

1.特殊變數 1 2 表示指令碼後接的引數值 引數的數量 所有引數 0 指令碼名 程序號 退出碼2.條件判斷 2.1.if elif else語句 bin bash if condition1 condition2 then text1 elif condition3 then text2 else...

shell指令碼(一)

1 列印九九乘法表 root centos7 scripts vim 99chengfb.sh bin bash for i in do for j in seq 1 i do for j in eval echo do for j in eval echo do result j i echo e...

shell指令碼(一)

shell 1.概述 shell是乙個命令列直譯器,它接收應用程式 使用者命令,然後呼叫作業系統核心 還是乙個功能相當強大的程式語言,易編寫.易除錯.靈活性強 2.shell解析器 檢視linux提供的shell解析 cat etc shells sh和 bash是常用的 bash包含了其他的功能,...