使用if语句
if条件语句:设定一个条件如果怎么,然后怎么样,if语句的选择结构可以分为三种基本类型,适用于不同的应用场合。
单分支if语句的语法结构:
代码语言:javascript复制if
条件测试操作
then
命令序列
fi
单分支if语句应用示例:
代码语言:javascript复制[root@linux /]# vim xxx.sh
#!/bin/bash
www=/www #变量赋值
if [ -d $www ] #判断$www变量是不是目录
then
echo 这是一个目录
fi
[root@linux /]# sh xxx.sh
这是一个目录
多分支if语句
对于多分支的选择结构,要求针对 条件成立和条件不成立 两种情况分别执行不同的操作
双分支if语句的语法结构:
代码语言:javascript复制if
条件测试操作
then
命令序列1
else
命令序列2
fi
双分支if语句应用示例:
代码语言:javascript复制#!/bin/bash
ping -c 3 -i 0.2 -W 3 $1 >> /dev/null #检查目标主机是否可以连通 $1变量是第一个参数
if #关键字(如果)
[ $? -eq 0 ] #测试上一条命令的返回结果
then #关键字(那么)
echo "Host $1 is up"
else 3关键字(否则)
echo "Host $1 is down"
fi
多分支if语句 多分支if语句语法结构:
代码语言:javascript复制if
条件测试操作1
then
命令序列1
elif
条件测试操作2
then
命令序列2
else
命令序列3
fi
多分支if语句应用示例:
代码语言:javascript复制[root@linux /]# vim xxx.sh
#!/bin/bash
if [ $1 -lt $2 ]
then
echo "$1 < $2"
elif [ $1 -eq $2 ]
then
echo "$1 = $2"
else
echo "$1 > $2"
fi
[root@linux /]# sh xxx.sh 1 0
1 > 0
[root@linux /]# sh xxx.sh 1 1
1 = 1
[root@linux /]# sh xxx.sh 1 2
1 < 2
for循环语句
for循环语句的语法结构:
代码语言:javascript复制for 变量名 in 取值列表
do
命令序列
done
for语句应用示例:
代码语言:javascript复制[root@linux /]# cat xxx.txt #需要创建的用户列表
test1
test2
test3
[root@linux /]# vim xxx.sh
#!/bin/bash
xxx=`cat /xxx.txt`
for i in $xxx
do
useradd $i #创建用户
echo "123456" |passwd --stdin $i > /dev/null #设置密码
done
[root@linux /]# sh xxx.sh #验证
[root@linux /]# tail -3 /etc/passwd
test1:x:1007:1007::/home/test1:/bin/bash
test2:x:1008:1008::/home/test2:/bin/bash
test3:x:1009:1009::/home/test3:/bin/bash
while循环语句
while循环语句的语法结构:
代码语言:javascript复制while 条件测试操作
do
命令序列
done
while语句应用示例:
代码语言:javascript复制[root@linux /]# vim xxx.sh
#!/bin/bash
while [ "$w" != "yes" ]
do
read -p "请输入yes退出循环:" w
done
[root@linux /]# sh xxx.sh
请输入yes退出循环:no
请输入yes退出循环:yes
[root@linux /]#
case分支语句
case语句的语法结构
代码语言:javascript复制case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
……
* )
默认命令序列
esac
case语句应用实例:
代码语言:javascript复制#!/bin/bash
nginx="/www/server/nginx/sbin/nginx"
case "$1" in
start)
$nginx
echo 正在启动Nginx访问
;;
stop)
pkill nginx
echo 正在停止Nginx服务
;;
restart)
$nginx -s restart
echo 正在重新启动Nginx服务
;;
reload)
$nginx -s reload
echo 正在重载Nginx服务
;;
*)
echo "Usage:$0 (start|stop|restart|reload)"
esac
[root@linux /]# curl -I -s 127.0.0.1|sed -n '1p' #可以访问
HTTP/1.1 200 OK
[root@linux /]# sh sss.sh stop #关闭Nginx服务
正在停止Nginx服务
[root@linux /]# curl -I -s 127.0.0.1|sed -n '1p' #不能访问
[root@linux /]# sh sss.sh start #启动Nginx
正在启动Nginx访问
[root@linux /]# curl -I -s 127.0.0.1|sed -n '1p' #可以访问
HTTP/1.1 200 OK