shell編程光速入門

跟老男孩學(xué)Linux運(yùn)維:Shell編程實(shí)戰(zhàn)
https://item.jd.com/12117874.html

1、為什么要學(xué)shell編程:

Linux系統(tǒng)中會(huì)大量使用shell,工作中我們也需要自動(dòng)化實(shí)現(xiàn)業(yè)務(wù)
例如:自動(dòng)備份、監(jiān)控、自動(dòng)安裝服務(wù)。
shell編程是Linux運(yùn)維人員必須要學(xué)會(huì)的編程語言。最簡單的編程語言
編程也是運(yùn)維人員必須具備的本領(lǐng):
shell或者python是必須的

2、什么是shell?

shell就是一個(gè)解釋器,/bin/bash,命令行的命令以及腳本都會(huì)通過shell解釋,傳給操作系統(tǒng),處理后再輸出給用戶
創(chuàng)建用戶時(shí)指定的


image.png

3.shell的分類

  1. Bourne shell
    Bourne shell又包括Bourne shell (sh)、Korn shell (ksh)、Bourne Again Shell(bash)三種類型。

  2. C shell
    C shell又包括csh、tcsh兩種類型。

  3. C7支持的shell

  • image.png

4.CentOS7默認(rèn)shell
image.png

5.什么是shell腳本?

腳本文件:把程序或者命令放入文件中執(zhí)行
工作中最多的就是寫腳本然后存放到文件

6.shell全局變量(環(huán)境變量)

  1. 全局變量(環(huán)境變量)
    系統(tǒng)中默認(rèn)存在的、在整個(gè)系統(tǒng)中生效、一般是大寫、系統(tǒng)中默認(rèn)就存在一些這樣的變量,用于滿足程序和系統(tǒng)運(yùn)行的需求
    image.png

    set可查看所有的全局變量
    自定義環(huán)境變量方法:(自己設(shè)置的、在局部生效)
    方法1
    export OLDBOY="I am oldboy."
    方法2:
    OLDBOY="I am oldboy."
    export OLDBOY
    image.png

    ====================================================
    /etc/profile==>/.bash_profile===>/.bashrc===>/etc/bashrc
    放環(huán)境變量的地方:
    老男孩推薦以后把環(huán)境變量放入/etc/bashrc

[root@oldboyedu ~]# tail -1 /etc/bashrc
export OLDBOY="I am oldboy."
[root@oldboyedu ~]# . /etc/bashrc
[root@oldboyedu ~]# echo OLDBOY #<==輸出一個(gè)變量內(nèi)容就加變量名
I am oldboy.
安裝java服務(wù)的時(shí)候就會(huì)配置環(huán)境變量。

7.shell局部變量:(自定義變量;普通變量)

是shell編程最常用的,
變量名=值
a=1
變量名:數(shù)字、字母、下劃線、不能是數(shù)字開頭
= 等號:賦值符,把什么東西給誰。賦值符號兩邊不能有空格。
值:東西,變量內(nèi)容。
引用內(nèi)容的符號:單引號、雙引號、反引號、不加引號
例如:

image.png

8.變量可以相加或者做函數(shù)

image.png

image.png

image.png

image.png

image.png

《九陰九陽》是金庸新著 和金庸屁關(guān)系沒有。
{金庸新}著

9.表達(dá)式:

  • 語法:

[ 表達(dá)式 ]中括號表達(dá)式,中括號里面兩端必須要有空格。
字符串要加雙引號
&&跟屁蟲(前邊對了,就輸出我)
||杠精(前邊錯(cuò)了你再輸出我)

整數(shù)表達(dá)式:
> -gt
= -ge
< -lt
<= -le
= -eq
不等于 -ne
1)整數(shù)表達(dá)式符 兩端必須要有空格
2)中括號里面兩端必須要有空格。
3)變量和比較的內(nèi)容,不需要加引號。

字符表達(dá)式
-z 變量長度為0時(shí),為真。zero
-n 變量內(nèi)容長度【不】為0時(shí),為真。not zero
a == a 字符串是否相同
#記憶方法“負(fù)負(fù)得正,正正的負(fù),正負(fù)得負(fù)”——(-z比喻為負(fù),-n比喻為正;匹配內(nèi)容為0時(shí)比喻為負(fù),不為0時(shí)比喻為正;&&跟屁蟲出來了比喻為正,||杠精出來比喻為負(fù))

image.png

image.png

image.png

10.判斷句:

格式:
if [ 你有錢 ]
then [跟你談朋友]
else [賽有哪啦]
fi

語法:
if ——如果
then——那么
elif——再來一次如果
else——否則
fi ——結(jié)尾

image.png

11.read命令

讀取用戶輸入(交互式)只能和賦值只能2選一
-p “提醒:”
-t “多長時(shí)間內(nèi)等待輸入” 以秒為單位
read -t 3 -p “”

image.png

多條件


image.png

12.特殊位置變量

1 腳本文件的第一個(gè)參數(shù)賦值給1
2 腳本文件的第二個(gè)參數(shù)賦值給2

[root@oldboyedu ~]# cat t.sh
echo 12
[root@oldboyedu ~]# sh t.sh oldboy oldgirl
oldboy oldgirl #<==oldboy就是1輸出的結(jié)果,oldgirl就是2輸出的結(jié)果。

[root@oldboyedu ~]# cat com_num.sh

!/bin/sh

read -p "請輸入兩個(gè)整數(shù):" a b

a=1 b=2
if [ a -gtb ]
then
echo "a>b"
elif [ a -eqb ]
then
echo "a=b"
else
echo "a<b"
fi

[root@oldboyedu ~]# sh com_num.sh 2 3
2<3
[root@oldboyedu ~]# sh com_num.sh 2 2
2=2
[root@oldboyedu ~]# sh com_num.sh 3 2
3>2

13.for循環(huán)

for n in 取值列表
do
執(zhí)行命令
done
加-x參數(shù)顯示過程

image.png

image.png

image.png

課后練習(xí):

1、比較整數(shù)大小。

image.png

2、判斷日期,每周六日去旅游,其它時(shí)間上課。

image.png

3、取出當(dāng)前系統(tǒng)Ip地址,判斷是否為10.0.0.31,如果是提示正確,如果不是給出提示。

image.png

image.png

4、打印10.0.0.1--10.0.0.254個(gè)Ip地址,當(dāng)IP地址為系統(tǒng)IP地址時(shí),給出某IP是系統(tǒng)IP的提示。

image.png

書寫腳本習(xí)慣:
1.以.sh結(jié)尾。
2.腳本開頭第一行 #!/bin/bash 腳本內(nèi)容由誰解釋。
由于Linux下默認(rèn)是bash,所以也可以不寫這一行。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容