
第十周-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命令
從鍵盤讀取變量的值,通常用在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ù)....


