Shell流程控制
时间:2022-07-24
本文章向大家介绍Shell流程控制,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
使用if语句
if条件语句:设定一个条件如果怎么,然后怎么样,if语句的选择结构可以分为三种基本类型,适用于不同的应用场合。
单分支if语句的语法结构:
if
条件测试操作
then
命令序列
fi
单分支if语句应用示例:
[root@linux /]# vim xxx.sh
#!/bin/bash
www=/www #变量赋值
if [ -d $www ] #判断$www变量是不是目录
then
echo 这是一个目录
fi
[root@linux /]# sh xxx.sh
这是一个目录
多分支if语句
对于多分支的选择结构,要求针对 条件成立和条件不成立 两种情况分别执行不同的操作
双分支if语句的语法结构:
if
条件测试操作
then
命令序列1
else
命令序列2
fi
双分支if语句应用示例:
#!/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语句语法结构:
if
条件测试操作1
then
命令序列1
elif
条件测试操作2
then
命令序列2
else
命令序列3
fi
多分支if语句应用示例:
[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循环语句的语法结构:
for 变量名 in 取值列表
do
命令序列
done
for语句应用示例:
[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循环语句的语法结构:
while 条件测试操作
do
命令序列
done
while语句应用示例:
[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语句的语法结构
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
……
* )
默认命令序列
esac
case语句应用实例:
#!/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
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- kali破解wifi密码
- 面向对象的7种设计原则(7)-开闭原则
- [数据库介绍]一站式表达谱数据分析
- windows下hashcat利用GPU显卡性能破解密码
- TCGAG多组学联合分析数据库
- Docker安装及使用
- CVE-2020-0796漏洞复现(RCE)
- Jenkins持续集成平台安装
- mysql架构备份之M-S-S级联复制
- Docker构建lnmp环境部署typecho
- MANJARO KDE安装配置(已换Arch Linux,此贴可能废弃)
- [数据库推荐]qPCR引物设计与评价
- markdown数学公式
- C++核心准则T.2:使用模板表现可以适用于多种参数类型的算法
- C++核心准则T.3:使用模板表现容器和范围