第十周-day43-Shell編程基礎

第十周-day43-Shell編程基礎.png

格式

#!/bin/bash
#!幻數(shù) 指定腳本用的命令解釋器
執(zhí)行腳本
sh
sh +x

1、為什么要學習shell編程?

Linux系統(tǒng)中會大量的使用Shell,工作中我們也需要自動化實現(xiàn)業(yè)務,例如:自動備份、監(jiān)控、自動安裝服務
Shell編程是Linux運維人員必須要會編程語言。最簡單的編程語言。
編程也是運維人員必須具備的本領:
Shell、python是運維人員必須具備的本領

2、什么是Shell?

shell就是一個解釋器(翻譯官),命令行的命令以及腳本都會通過shell解釋,傳給操作系統(tǒng),處理后在輸出給用戶。

3、Shell的分類

/bin/sh、/bin/bash、/usr/bin/sh、/usr/bin/bash

4、CentOS7默認腳本是Shell

[root@zhang ~]# echo $SHELL
/bin/bash

5、什么是Shell腳本?

程序、命令放入文件里執(zhí)行,這個文件稱之為Shell腳本文件。
工作中最多的編程寫腳本,存放在文件里。

二、變量

1.變量

方便腳本里面進行重復使用

命名規(guī)則
    看見變量名稱  識別變量作用
    不能以數(shù)字開頭

變量分類
    局部變量(普通變量)
    IP=10.0.0.200
    time=2019-01-01

全局變量(環(huán)境變量)
    系統(tǒng)創(chuàng)建
        在整個系統(tǒng)中生效
    大部分地方意思一樣
    一般是大寫

特殊變量
        \$?  數(shù)字  \$#  \$*

2.局部變量(普通變量)

image.png

3.引號系列

image.png

4.特殊變量

5.局部變量和全局變量區(qū)別:

[root@m01 /server/scripts]# LIDAO=996
[root@m01 /server/scripts]# 
[root@m01 /server/scripts]# echo $LIDAO
996
[root@m01 /server/scripts]# cat show.sh 
#!/bin/bash
echo $LIDAO
[root@m01 ~]# sh show.sh  \\執(zhí)行腳本為空

[root@m01 ~]# 
[09:17 root@m01 ~]#  export LIDAONB  \\添加全局變量
[09:22 root@m01 ~]# echo $LIDAONB
666
[09:22 root@m01 ~]# sh show.sh 
666

6.局部變量和全局變量區(qū)別

https://www.processon.com/view/link/5a0e4380e4b06c8e10923353

image.png

7.awk的 -v 參數(shù)

[09:49 root@m01 ~]# x=10
[09:49 root@m01 ~]# y=99
[09:49 root@m01 ~]# echo $x
10
[09:49 root@m01 ~]# echo $y
99
[09:49 root@m01 ~]# awk 'BEGIN{print $x/$y}'
awk: cmd. line:1: fatal: division by zero attempted
[09:49 root@m01 ~]# awk -vn1=10 -vn2=99 'BEGIN{print n1/n2}'
0.10101
[09:51 root@m01 ~]# awk -vn1=$x -vn2=$y 'BEGIN{print n1/n2}'
0.10101
[09:51 root@m01 ~]# awk -vx=10 -vy=99 'BEGIN{print x/y}'
0.10101
[09:53 root@m01 ~]# 

8.利用shell編譯小型計算器

[10:18 root@m01 ~]# vim show.sh 
#!/bin/bash
. /etc/profile
x=$1
y=$2

echo $1\+$2= ;awk -vx=$x -vy=$y 'BEGIN{print x+y}'
echo $1\-$2= ;awk -vx=$x -vy=$y 'BEGIN{print x-y}'
echo $1\*$2= ;awk -vx=$x -vy=$y 'BEGIN{print x*y}'
echo $1\/$2= ;awk -vx=$x -vy=$y 'BEGIN{print x/y}'

[10:19 root@m01 ~]# sh show.sh 5 6
5+6=
11
5-6=
-1
5*6=
30
5/6=
0.833333

知識有限暫不支持小數(shù)運算



9.特殊變量中簡單判斷參數(shù)個數(shù):

10.判斷目錄存不存在,不存在就創(chuàng)建

三、判斷語句

if判斷句語法:單分支: 如果。。。那么就
if [ 表達式 ]
then命令
else
exit 退出
fi 果如

1.if語句格式:

if [ 表達式 ]
    then命令
    exit 退出
fi

2.對比兩個數(shù)值大小


3.檢查定時任務是否運行中

避免過濾的時候 過濾掉grep命令自己

四、循環(huán)語句

for語句

五、擴展:

read命令

http://man.linuxde.net/read

從鍵盤讀取變量的值,通常用在shell腳本中與用戶進行交互的場合。該命令可以一次讀取多個變量的值,變量和輸入的值都需要使用空格隔開。在read命令后面,如果沒有指定變量名,讀取的數(shù)據(jù)將被自動賦值給特定的變量REPLY

-p:指定讀取值時的提示符;
-t:指定讀取值時等待的時間(秒)。
截取自簡書好友—依舊

總結:

1.變量 特殊變量 $# $* $1 $0
2.判斷與循環(huán)
服務腳本
任務:

批量添加用戶設置隨機密碼 for循環(huán)實現(xiàn)
批量修改文件名字 for/rename
touch /oldboy/oldboy.txt 批量.txt修改為.jpg

未完待續(xù)....

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

友情鏈接更多精彩內容