Shell腳本應(yīng)用(一)

2018-06-08 17:05 更新

防偽碼:但愿人長(zhǎng)久,千里共嬋娟

                第五章 shell腳本應(yīng)用(一)

溫馨提示: 如果想提高shell腳本的編寫速度,必須要熟練使用vi編輯器的各種快捷鍵

前言:

1、shell腳本的作用:可以批量處理、自動(dòng)化完成一系列維護(hù)任務(wù),大大減輕管理員的負(fù)擔(dān)。

2、介于系統(tǒng)內(nèi)核與用戶之間,負(fù)責(zé)解釋命令行,如圖所示;

    

3、執(zhí)行腳本文件的方法

a、腳本文件路徑(必須有x權(quán)限)

b、sh 腳本文件路徑(必須有x權(quán)限)

c、source 腳本文件路徑(不要求有x權(quán)限)

4、交互式硬件設(shè)備

    類型    設(shè)備文件  文件描述編號(hào)         默認(rèn)設(shè)備
    標(biāo)準(zhǔn)輸入  /dev/stdin          0    鍵盤
    標(biāo)準(zhǔn)輸出  /dev/stdout      1    顯示器
    標(biāo)準(zhǔn)錯(cuò)誤輸出  /dev/stderr      2    顯示器

5、重定向操作

一、shell腳本基礎(chǔ)知識(shí)

1、 編制第一個(gè)shell腳本

1)Vi  first.sh

2)在腳本文件中輸入如下內(nèi)容

3) 設(shè)置執(zhí)行權(quán)限并執(zhí)行

2、 為腳本添加注釋,友好輸出,更容易讀懂。

1)Vi  first.sh

2) ./first.sh執(zhí)行腳本之后如下

3、 重定向操作

1) >表示重定向輸出,>>表示重定向追加

2) 重定向輸入,<表示重定向輸入

Vim pass.txt,在文件中添加123456

然后執(zhí)行passwd  --stdin jerry  < pass.txt

3)錯(cuò)誤重定向,可用來(lái)收集程序執(zhí)行的錯(cuò)誤信息,為排錯(cuò)提供依據(jù)。

例如:執(zhí)行以下操作可以將使用tar命令備份時(shí)出現(xiàn)的錯(cuò)誤信息保存到error.log文件中

 4) &>操作符可以將兩類輸出信息保存到同一個(gè)文件,例如,在編譯源碼包的自動(dòng)化腳本中,若要忽略make,make install的操作的過(guò)程信息,可以將其定向到空文件/dev/null

首先下載httpd軟件到本機(jī),然后執(zhí)行Vim httpd_install.sh,并輸入如下內(nèi)容:

設(shè)置權(quán)限chmod  +x  httpd_install.sh

最后執(zhí)行./httpd_install.sh

4、 管道操作

例子:使用grep命令查詢使用/bin/bash作為shell的用戶名稱時(shí),會(huì)輸出符合條件的整行內(nèi)容,在此基礎(chǔ)上可以結(jié)合管道操作與Awk命令做進(jìn)一步過(guò)濾,只輸出用戶名和登錄shell列。

1) 提取之前的正常效果

2) 提取之后的效果,只顯示用戶名和shell列

3) 再例如:顯示磁盤已用的百分比

二、使用shell變量

1、自定義變量:只在自己的shell環(huán)境中有效

1)定義新的變量和引用變量

Product=benet

Version=5.0


2、變量賦值的特殊操作

1)雙引號(hào)的作用:賦值的內(nèi)容包含空格時(shí),例如:


2) 單引號(hào)的作用:賦值的內(nèi)容中包含”$”,  ““” , “ \ ”等具有特殊含義的字符時(shí)

3) 反撇號(hào)(`)的作用:用于將某個(gè)命令的輸出結(jié)果賦值給變量,例如:

4) $()的作用:可以代替反撇號(hào),解決嵌套問(wèn)題,因?yàn)榉雌蔡?hào)不能實(shí)現(xiàn)嵌套,例如:查詢提供useradd命令程序的軟件包所安裝的配置文件位置。

5) read命令的作用:用來(lái)提示用戶輸入信息,例如:

3、 設(shè)置變量的作用范圍

     新定義的變量只在當(dāng)前shell有效,如果想進(jìn)入新的shell環(huán)境同樣有效,就需要使用export命令將變量導(dǎo)出為“全局變量”

也可以在export導(dǎo)出全局變量的同時(shí),也可以為變量賦值,例如:

4、 變量的運(yùn)算

例如:計(jì)算變量y的三次方,并將結(jié)果賦值給變量ycube

三、 特殊的shell變量

1、 環(huán)境變量

環(huán)境變量系統(tǒng)安裝好了就存在,不用創(chuàng)建,可以直接使用,我們先查看一下:

env

我們可以把腳本直接添加到$PATH搜索路徑中去,這樣執(zhí)行腳本的時(shí)候就不用加./了

環(huán)境變量的全局配置文件為/etc/profile,作用于所有用戶,例如:將歷史記錄命令條數(shù)改為20條,只針對(duì)root用戶

Vim  /root/.bash_profile

只需要添加上面的最后一行,然后執(zhí)行source  /root/.bash_profile使之生效。

2、 位置變量,例如求兩個(gè)數(shù)的和

Vi  adder2num.sh

3、 預(yù)定義變量,系統(tǒng)安裝好之后就有,不能創(chuàng)建,只能使用,

例如:$#表示命令行中位置參數(shù)的個(gè)數(shù),$*表示所有位置參數(shù)的內(nèi)容,$?表示前一條命令執(zhí)行后的返回狀態(tài),返回0表示正確。$0表示當(dāng)前執(zhí)行的腳本或程序的名稱。

例如:制作備份數(shù)據(jù)腳本,vi mybak.sh

執(zhí)行腳本./mybak.sh,備份兩個(gè)文件

查看備份結(jié)果

四、 綜合案例

1、 實(shí)驗(yàn)?zāi)繕?biāo):遠(yuǎn)程備份mysql服務(wù)器的數(shù)據(jù)庫(kù)

2、 實(shí)驗(yàn)環(huán)境:一共2臺(tái)mysql服務(wù)器A和B,在B上遠(yuǎn)程備份A上的數(shù)據(jù)庫(kù),在A上建立數(shù)據(jù)庫(kù)google和baidu,注意在防火墻上開(kāi)啟3306端口或者關(guān)閉防火墻,并設(shè)置計(jì)劃任務(wù)定時(shí)更新

3、 實(shí)驗(yàn)拓?fù)洌?/span>

4、 實(shí)驗(yàn)步驟

1) 在A上建立數(shù)據(jù)庫(kù),

2) 在A上建立一個(gè)建立一個(gè)專用的數(shù)據(jù)庫(kù)用戶,這里我使用root賬戶,授予root賬戶對(duì)可以通過(guò)遠(yuǎn)程主機(jī)192.168.1.2連接A

3) 在備份主機(jī)B上備份測(cè)試

查看已經(jīng)備份成功

4) 在備份主機(jī)B上編寫腳本,之前需要?jiǎng)?chuàng)建備份目錄 mkdir  -p  /opt/beifen

然后編寫腳本vi  mysqlbak.sh

5)執(zhí)行備份腳本

./mysqlbak.sh

5、 設(shè)置計(jì)劃任務(wù)

Crontab  -e

查看已經(jīng)備份成功

謝謝觀看,真心的希望能幫到您!

 


本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)