一、 簡單介紹
shell指的就是人機互動平台。常見的有IBM的ksh,HP的csh,windows的powershell以及linux的bash shell。
首先養成良好的習慣,通過#echo $SHELL指令可以查到預設shell。在腳本的開頭加上聲明。
如圖,查詢出的預設shell為/bin/bash,是以一般在腳本開頭加上一行如下聲明
#!/bin/bash
####其中,#!代表聲明,如果隻有#,則代表注釋
單引号:遇到任何特殊字元都是原樣輸出
雙引号:遇到特殊字元會轉義後輸出
二、 常見功能
- 定義變量
DIR=/backup/
DIR=”/backup/”
A=100
a=100
B=200
C=A+B
定義完之後使用echo $C指令可以檢視具體變量的值。
$(command),可以引用指令執行的結果
例如:
CPU=$(df -h|grep -w / |awk ‘{print $5}’ |sed ‘s/%//’)
if [ “$CPU” -ge 80 ]; then
echo “warning,CPU is full”
else
echo “cpu is safe”
fi
******注意:if後面一定要加空格,不然會出現文法錯誤。
- 判斷指令執行的結果
command1 && command2
##如果指令1執行成功了則執行指令2,反之則不執行指令2
command1 || command2
##如果指令1執行失敗則執行指令2,反之則不執行指令2
或者用 echo $?來查詢指令是否執行成功,如果傳回值是0代表成功,1-255代表失敗。
例如:
for num in $(seq 1 10)
do
hosts=192.168.6.$num
ping -c2 $hosts &> /dev/null
if [ “$?” = 0 ];then
echo “$hosts is up”
else
echo “$hosts is down”
fi
done
-
test表達式判斷
可以用main test去檢視test的所有用法,這裡舉兩個典型例子。
test -f passwd.1
##判斷普通檔案passwd.1是否存在
在腳本中可以簡寫成[ -f passwd.1],或者用[! -f passwd.1]表示反向判斷。
- if判斷
-
for循環
例子:
for num in $(seq in 1 10)
do touch /tmp/file.$num && echo “/tmp/file.$num create successful!”
done
-
位置化參數
$1:取第一個參數
$2:取第二個參數
$*:取所有參數
$0:取腳本檔案名
echo firstname:$1
echo lastname:$2
echo fullname:$*
:wq!
#./test.sh wu yequan
firstname:wu
lastname:yequan
fullname:wu yequan
if [ “$1” = redhat ];then
echo “fedora”
elif [ “$1” = redhat ]; then
echo “redhat”
else
echo “ERROR,Please reinput”
fi