shell_流程控制语句
if
if开头,fi结尾- 单分支
if语句
1 | |
1 | |
统计根分区使用率写提醒脚本
1 | |
1 | |
注意:
- 用awk也行
1
rate=$(df -h | grep /dev/vda1 | awk '{print $5}' | awk 'BEGIN{FS="%"}{print $1}') - 比较中,
$rate前面加\$引用变量
- 多分支打包备份
1
2
3
4
5
6if [ 判断 ]
then
program
else
program
fi/etc目录:解释:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16#!/bin/bash
date=$(date +%y%m%d)
size=$(du -sh /etc)
if [ -d /tmp/dbback ]
then
echo "Date is:$date">/tmp/dbback/db.txt
cd /tmp/dbback
tar -zcf etc_$date.tar.gz /etc db.txt &> /dev/null
rm -rf /tmp/dbback/db.txt
else
mkdir /tmp/dbback
echo "Date is:$date" > /tmp/dbback/db.txt
cd /tmp/dbback
tar -zcf etc_$date.tar.gz /etc db.txt &> /dev/null
rm -rf /tmp/dbback/db.txt
fi
- 判断是否存在
/tmp/dbback这个目录 - 有就备份,没有就创建
- 进入这个目录作为相对路径
- 打包后 删除原来的文件
一个
yum -y install nmap安装远程扫描命令yum -y install httpd安装apachenmap -sT ip地址看80端口开了没nmap -sT ip | grep 'http$' | awk '{print $2}',截取端口状态
写一个脚本1
2
3
4
5
6
7
8
9#!/bin/bash
port=$(nmap -sT ip | grep 'http$' | awk '{print $2}')
if [ "$port" == "open" ];then
echo "$(date) httpd is open!" >> /tmp/autostart.acc.log
else
#没有启动则重启
/etc/rc.d/init.d/httpd start &> /dev/null
echo "$(date) restart httpd ">> /tmp/autostart.err.log
fiif elseif else
1
2
3
4
5
6
7
8if [ 判断 ];then
program
elif
then
program
else
program
fi
1 | |
判断文件类型脚本
1 | |
case 语句
- 和
if一样,结束语都要导致 program语句要以;;结尾例如:1
2
3
4
5
6
7
8
9
10case $val in
1)
echo "1";;
2)
echo "2";;
3)
echo "3";;
4)
echo "other";;
esac1
2
3
4
5
6
7
8
9
10
11
12#!/bin/bash
read -t 30 -p "Please input you choose" choose
case $choose in
1)
echo "1";;
2)
echo "2";;
3)
echo "3";;
*)
echo "other";;
esac
for
- 在文件中操作
1
2
3
4for 变量 in value1 v2 v3...
do
program
done
1 | |
- 例:统计当前文件夹下
.sh文件数量1
2
3
4
5
6
7
8
9#!/bin/bash
cd /tmp/sh/
cnt=0
for i in $(ls *.sh)
do
cnt=$(( $cnt + 1 ))
echo "$i"
done
echo "文件数量=$cnt"
- c语法,在
(( ))数值运算符内例:1
2
3
4for ((i=1; i<=100; i++))
do
program
done1
2
3
4
5
6
7#!/bin/bash
cnt=0
for ((i=1; i<=100; i++))
do
cnt=$(( $cnt + $i ))
done
echo $cnt
while / until
1
2
3
4
5
6
7#!/bin/bash
i=100
while [ $i -ge 10 ]
do
echo "$i"
i=$(( $i - 1 ))
doneuntil:直到 条件成立 就 终止1
2
3
4
5
6
7
8#!/bin/bash
sum=0; i=1
until [ $i -gt 100 ]
do
$sum=$(( $sum + $i ))
$i=$(($i+1))
done
echo $sum
shell_流程控制语句
https://blog.989883.xyz/2019/07/19/csdn/shell_流程控制语句/