shell指令碼:
#!/bin/bash 第一行必須通過#!來指定當前所用的shell
一、變數:
"":允許通過$符號引用其他變數的值
'':禁止引用其他變數,$視為一般字元
``:把命令執行的結果賦給變數
1、輸入變數:
read -p "輸入提示資訊:" a
$a #調用並顯示變數a
2、自訂變數
a="hello world"
export a #設定a為全域變數,適合當前環境所支援的所有shell
echo $a #顯示變數
unset a #清除變數
a="haha:$a" #給a前面追加字串
expr $a + $b #整數變數之間計算用expr
3、系統的數字變數:
#$0~$9都是系統定義好的數字變數,其中$0表示當前進程名
4、預定義變數:
$$:#當前進程號
$#:#命令列中位置參數的個數
$?:#上一條命令執行後返回的狀態:0表示正常,非0為異常
$*:#所有位置參數內容
$!:#後台啟動並執行最後一個進程號
應用:
a、#查詢系統上登陸的使用者個數,當使用者數過多是提示系統超載
[`who | wc -l` -le 10] && echo "yes" 參數wc是word count的縮寫
b、#尋找/boot分區的空間使用率超過額定大小就警示
#awk用來從檔案或字串中根據某種規則來抽取資訊資料,
#完整的awk指令碼用來格式化文字檔的資訊
a = `df -hT | grep "/boot" | awk '{print $6}' | cut -d "%" -f 1`
[$a -gt 95] && echo "/boot目錄佔用磁碟容量過大"
#判斷鍵盤上輸入的資訊是否與系統中的資訊相等
read -p "location:" mylocation
[$mylocation = "myLocation"] && echo "yes"
#判斷mysql是否在運行,若已運行輸出提示否則啟動mysql
service mysqld status &> /dev/null
if [$? -eq 0]
then "mysql server is running"
else /etc/init.d/mysqld restart
fi
#大量新增20個系統使用者,帳號分別為"user1"、"user2"、..."user20"
i=1
while [$i -le 20]
do
useradd user$i
echo "123456" | password --stdin user$i &>/dev/null
i=`expr $i +1`
done
#計算幾個數的和
result = 0
while [$# -gt 0]
do
result expr $reesult + $1
shift
done
echo "result is $result"
邏輯語句:
test命令:
1、test 條件運算式
2、[ 條件運算式 ]:
[ 操作符 檔案或目錄 ]:
操作符包括:
-d:是否為目錄
-e:是否存在
-f:是否檔案
-r:是否目前使用者有讀許可權
練習:[-d /etc/vsftpd]
echo $?
或
[-d /etc/vosftpd]&& echo "yes"
if 磁碟已用空間>80%
then 警示
fi
if 磁碟已用空間>80%
then 警示
else ...
fi
for tm in "moring" "noon" "evening"
do
echo "the $tm of the day."
done
while 可用記憶體<100MB
do
可用記憶體數
done
函數
#定義一個函數並調用
adder(){
echo `expr $1 + $2`
}
adder12 34
adder 56 78