linux初學 :簡易的shell腳本


什么是shell

 Shell本身是一個用C語言編寫的程序,它是用戶使用Unix/Linux的橋梁,用戶的大部分工作都是通過Shell完成的

Shell有兩種執行命令的方式:

交互式(Interactive):解釋執行用戶的命令,用戶輸入一條命令,Shell就解釋執行一條。
批處理(Batch):用戶事先寫一個Shell腳本(Script),其中有很多條命令,讓Shell一次把這些命令執行完,而不必一條一條地敲命令。
第一個腳本:

vi hello.sh  一般shell腳本都以.sh為結尾

#!/bin/bash
echo 'hello world'
// #!是一個約定的標記,告訴系統該腳本使用哪個解釋器來執行
echo 命令用於向窗口輸出文本

./hello.sh,即可打印hello world字符串了

下面我們寫一個停止mysql的腳本:

vi mysql_stop.sh

#!/bin/bash pid=`ps -ef|grep mysql|grep -v grep|awk '{print $2}'` // =號后的符號是左tab鍵上邊的那個符號,不是單引號,千萬不要加錯``兩個符號之間代表是命令,變量名和‘=’后不能有空格 //ps -ef|grep mysql用來查詢mysql的進程,grep -v grep用來屏蔽grep的進程,awk用來取查詢結果的第二列的值,即進程號 kill -9 $pid //kill -9 用來殺進程,$pid是用來取變量值,要加$符號

如上,一個停止mysql的腳本就完成了,我們只需要運行mysql_stop.sh這個腳本就可以停止mysql了

假設mysql未啟動,這個腳本再運行的時候就會報錯了,那么我們需要在shell腳本里加入if判斷語句

#!/bin/bash
pid=`ps -ef|grep mysql|grep -v grep|awk '{print $2}'`
if [ $pid ]    //if語句開始,[]括號中是條件,[]中前后一定要有空格
then         //then   if語句的結構,條件滿足時執行then后的內容
kill -9 $pid
else        //else 后為條件不滿足時,執行的內容
echo 'mysql started'
fi           //fi 代表if語句的結束,一定要加,否則腳本運行時會報錯

還有一種情況是ps查詢出的進程有很多個,那我們如何殺掉進程呢,這時需要用到xargs命令

#!/bin/bash
pid=`ps -ef|grep lampp|grep -v grep|wc -l`
if [ $pid -ge 2 ]    // -ge是shell的函數之一,相當於“大於等於”,shell中只能用shell特定的運算函數,可查看詳細列表,該條件的意思是查詢到的lampp進程行數大於2時執行then的內容
then        
ps -ef|grep lampp|grep -v grep|awk '{print $2}'|xargs kill -9
//以上語句中,xargs的意義:將awk取到的所有進程號全部傳給kill -9 ,殺掉全部進程
else       
echo 'lampp stopped'
fi          

所以,shell中常用的幾種命令大家要牢記了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM