SHELL簡單腳本編寫
#!/bin/bash
X=$[RANDOM%10+1]
read -p "[1-10]你猜:" cai
if [ $cai -eq $X ];then
echo 恭喜你猜對了
exit
elif [ $num -gt $X ];then
echo 猜大了
else
echo 太小了
fi
vim /root/6.sh
#!/bin/bash
read -p "請輸入一個軟件包:" b
b=$(rpm -qa | grep "$a")
if [[ -z $b ]];then
echo "沒有安裝"
else
echo "已經安裝"
fi
vim /root/5.sh
#!/bin/bash
netstat -anptu | grep httpd &> /dev/null
if [ $? -eq 0 ];then
echo "已經啟動"
else
echo "沒有啟動"
fi
vim /root/4.sh
#!/bin/bash
ping -c3 -i0.2 -w1 $1 &> /dev/null
if [ $? -eq 0 ];then
echo "host $1 up"
else
echo "host $1 down"
fi
vim /root/3.sh
#!/bin/bash
[ -d /mnt ] || mkdir /mnt
mount /dev/cdrom /mnt
vim /root/2.sh
#!/bin/bash
[ ! -d /mnt ] && mkdir /mnt
mount /dev/cdrom /mnt
vim /root/1.sh
#!/bin/bash
num=$(who | wc -l)
[ $num -gt 10 ] && mail -s errot root < mail.txt
crontab -e
* * * * * /root/1.sh
vim /mail.txt
隔壁老王來了
ping 176.130.8.50-150,開啟的有多少個,沒有開啟的有多少個
#!/bin/bash
x=0
y=0
for i in {100..150}
do
ping -c2 -i0.1 -W1 176.130.8.$i &> /dev/null
if [ $? -eq 0 ];then
echo "176.130.8.$i is up"
let x++
else
echo "176.130.8.$i is down"
let y++
fi
done
echo "開機的有$x個, 關機的有$y個"
求1+2+3+4+5......100的和
#!/bin/bash
sum=0
for i in {1..100}
do
let sum+=i
done
echo "總和$sum"
求1*2*3*4......30的積
#!/bin/bash
sum=1
for i in {1..50}
do
let sum\*=i
done
echo "總共是 $sum"
將/var/log每個文件,單獨打包,保存到/tmp中
for i in `ls /var/log`
do
tar -czf /tmp/$i.tar.gz /var/log/$i
done
----------輔助理解/var/log/文件理解的打包過程
for i in a.txt b.txt c.txt d.txt
do
i=a.txt
tar -czf /tmp/$i.tar.gz /var/log/$i
done
利用Shell腳本,猜一個隨機數
#!/bin/bash
y=0
num=$[RANDOM%100+1]
while :
do
read -p "[1-100] , 你猜一個數:" cai
let y++
if [ $cai -eq $num ];then
echo "恭喜猜對了, 你猜了$y次"
exit
elif [ $cai -gt $num ];then
echo "猜大了"
else
echo "猜小了"
fi
done
case語句
如果參數是redhat,則顯示是fedora
如過參數是fedora,則顯示是redhat
如果參數是其他,則顯示是Useage
#!/bin/bash
case "$1" in
redhat)
echo "fedora";;
fedora)
echo "redhat";;
*)
echo "Usage";;
esac
case語句(判斷語句),簡化if語句-----------只能進行兩個值之間是否相等
#!/bin/bash
case "$1" in
-n)
touch $2;;
-e)
vim $2;;
-c)
cat $2;;
-r)
rm -rf $2;;
*)
echo "Usage:$0 (-n|-e|-c|-r|)" 文件名
esac
Shell調用函數----------就是給一段命令取個別名(函數)
基本格式:函數名 (){
大括號中間跟命令
}
調用函數:函數名
ll(ls -l)
#!/bin/bash
cecho (){
echo -e "\033[$1m$2\033[0m"
}
cecho 32 OK
cecho 34 Error
cecho 35 Waring
3X:是字體顏色
4X:是背景顏色
X:表示樣式
While語句
固定格式:while
i=1
while [ $i -lt 10 ]
do
echo "你好"
let i++
done
break,contine,exit給腳本的間接中斷在重復使用
(1)break中斷整個循環體
(2)continue中斷本次循環,立即跳入下一次循環
(3)exit中斷整個腳本
#!/bin/bash
for i in {1..5}
do
[ $i -eq 3 ] && break
echo $i
done
echo OK
#!/bin/bash
for i in {1..5}
do
[ $i -eq 3 ] && continue
echo $i
done
echo OK
#!/bin/bash
for i in {1..5}
do
[ $i -eq 3 ] && exit
echo $i
done
echo OK
#!/bin/bash
sum=0
while :
do
read -p "請輸入數字[0結束]:" xx
[ $xx -eq 0 ] && break
let sum+=xx
done
echo "總和是$sum"
打印9*9乘法表
#!/bin/bash
for i in `seq 9`
do
for x in `seq $i`
do
echo -n "$i*$x=$[$i*$x]"
done
echo
done
猴子摘香蕉
#!/bin/bash
x=1
for i in {1..8}
do
let x=x+1
let x=x*2
done
echo $x
國際象棋
#!/bin/bash
b=1
while [ $b -le 4 ]
do
for i in {1..4}
do
echo -en "\033[40m \033[0m"
echo -en "\033[47m \033[0m"
done
echo
for i in {1..4}
do
echo -en "\033[47m \033[0m"
echo -en "\033[40m \033[0m"
done
echo
if [ $b -eq 2 ];then
echo -e "\033[47m 楚河漢界 \033[0m"
fi
let b++
done
#!/bin/bash
read -p "請輸入用戶名:" name
read -p "請輸入用戶密碼:" pass
if [ -z "$name" ];then
echo "必須輸入用戶名"
exit
fi
pass=${pass:-123456}
useradd $name
echo "$pass" | passwd --stdin $name
提示用戶輸入一個數:如果輸入的是10,則腳本1+2+3+4.....10
如果輸入的是20,則腳本1+2+3....+20
如過沒有輸入,則腳本1+2+3+4......+100
#!/bin/bash
read -p "請輸入一個數字:" xx
xx=${xx:-100}
sum=0
for i in `seq $xx`
do
let sum+=i
done
echo "總和是$sum"
創建文件touch {a,b,c,d}.txt,把 .txt後綴改為 .doc
#!/bin/bash
for i in `ls *.txt`
do
mv $i ${i%.txt}.txt
done
改變參數,賦予變量
#!/bin/bash
for i in `ls *.$1`
do
mv $i ${i%.$1}.$2
done
#!/bin/bash
sum=0
for i in `seq 2 2 100`
do
let sum=sum+i
done
echo "$sum"
sum=0
for i in `seq 1 2 99`
do
let sum+=i
done
echo "總和是$sum"
#tmp=0
read -p "shu zi" num
num=${num:-100}
for i in `seq 2 2 $num`
do
let tmp+=i
done
echo $tmp
#!/bin/bash
case $1 in
start)
if [ -f /usr/local/nginx/logs/nginx.pid ];then
echo "正在運行"
else
/usr/local/nginx/sbin/nginx
echo "啟動成功"
fi;;
stop)
if [ ! -f /usr/local/nginx/logs/nginx.pid ];then
echo "已經關閉"
else
/usr/local/nginx/sbin/nginx -s stop
echo "關閉成功"
fi;;
restart)
if [ -f /usr/local/nginx/logs/nginx.pid ];then
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
echo "重啟成功"
else
/usr/local/nginx/sbin/nginx
echo "重啟成功"
fi;;
status)
if [ -f /usr/local/nginx/logs/nginx.pid ];then
netstat -ntulp |grep nginx
else
echo "沒有運行"
fi;;
*)
echo "Error";;
esac
SHELL簡單腳本編寫