Linux的shell編程前奏之基礎技能實戰一

                                                                             Linux的shell編程前奏之基礎技能實戰一linux

前言:shell腳本語言是實現linux/unix系統管理及自動化運維所必備的重要工具,linux/unix系統的底層及基礎應用軟件的核心大都涉及shell腳本的內容shell

一>寫一個簡單的清理系統日誌文件/var/log/messages的shell腳本程序。 編程

#!/bin/sh   #此shell腳本用於清理/var/log/messages系統日誌
LOG_DIR=/var/log
ROOT_UID=0
if [ "$UID" -ne "$ROOT_UID" ] 
then
echo "Must be root can run the shellScript"
exit 1
fi
cd $LOG_DIR ||{#若是切換到指定目錄不成功,||前面的不成功就執行||後面的,&&前面的成功就執行&&後面的
echo "cannot change to necessary directory"   
exit 1
}
cat /dev/null>messages &&{
echo "logs cleaned up"
exit 0
}
echo "Logs cleaned up fail."
exit 1

總結:bash

1>shell是一個命令解釋器,它的做用是解釋執行用戶輸入的命令及程序,用戶每輸入一條命令,shell就執行解釋一條。運維

2>由內到外,硬件---系統核心-----命令解釋器----外圍應用程序。shell存在於操做系統的最外層,負責與用戶直接對話,把用戶的輸入解釋給操做系統,並處理各類各樣的操做系統的輸出結果,而後輸出到屏幕返回給用戶。ide

輸入系統用戶名和密碼並登錄到linux後的全部操做都是由shell解釋執行的。工具

3>shell腳本語言很適合用於處理純文本類型的數據,是一種弱類型的語言,分爲Bourne shell(sh,ksh,bash),C shell(csh,tcsh)。測試

4>linux經常使用操做系統默認的shell是bash,能夠用echo $SHELL顯示。spa

5>shell腳本的執行的兩種方式:A.sh shell腳本名稱  B. ./shell腳本名稱操作系統



二>實現系統中屢次執行某一個腳本後的進程只有一個。

#!/bin/sh
pidpath=/tmp/a.pid
if [ -f "$pidpath" ]
then
kill "cat $pidpath" >/dev/null 2>&1
rm -f $pidpath
fi
echo $$ >$pidpath
sleep 300

總結:

1>經常使用export來定義環境變量。若是但願環境變量永久生效,則能夠將其放在用戶環境變量文件或者全局環境變量文件裏。

2>經常使用(變量名=value)的形式定義普通變量。

當不加引號定義變量時,值裏有變量的會被解析後再輸出;

當加雙引號定義變零時,值裏有變量和命令(命令須要反引)的會被解析後再輸出;

當加單引號定義變量時,,即便值裏有變量和命令(命令須要反引)也會原樣輸出;

3>把一個命令的結果做爲變量的內容賦值的方法:A. 變量名=`ls`    B.變量名=$(ls)

4>用echo等命令輸出變量的時候,也能夠用不加引號,單引號,雙引號,反引號,例如:echo $A,echo "$A",echo `$A`,echo '$A',和上面的總結一致。

5>經常使用文件測試操做符:

-d文件(directory)                  文件存在且爲目錄則爲真,即測試表達式成立。

-f文件(file)   文件存在且爲普通文件則爲真,即測試表達式成立。

-e文件(exist)   文件存在則爲真,即測試表達式成立。

-r文件(read)   文件存在且可讀則爲真,即測試表達式成立。

-s文件(size)   文件存在且文件大小爲零則爲真,即測試表達式成立。

-w文件(write)   文件存在且可寫則爲真,即測試表達式成立。

-x文件(executable)   文件存在且可執行則爲真,即測試表達式成立。

-L文件(link)               文件存在且爲連接文件則爲真,即測試表達式成立。

f1 -nt f2   文件f1比文件f2新則爲真,即測試表達式成立。根據文件的修改時間來計算。

f1 -ot f2   文件f1比文件f2舊爲真,即測試表達式成立。根據文件的修改時間來計算。

相關文章
相關標籤/搜索