shell脚本编程教程之三 --- 条件分支编程
来源:互联网 发布:python hist alpha 编辑:程序博客网 时间:2024/06/05 15:44
vim math.sh
# a=1
# b=2
# c=$a+$2
或者
# c=$(($a+$b))
# echo $c
条件判断:
格式1:
if [ 条件 ]
then
条件为真执行的任务
fi
格式2:
fi [ 条件 ]
then
执行条件为真的任务
else
执行条件为假
fi
格式2:
fi [ 条件1 ]
then
条件1为真执行条件为真的任务
elif [ 条件2 ]
then
条件2为真执行条件为假
else
两个条件都不满足
fi
条件判断的书写
: ':'表示真
> -gt greater than
< -lt littler than
>= -ge greater equal
<= -le littler equal
== -eq equal
!= -ne not equal
|| && 的书写:
if [ $a -lt 10 ] && [ $a -gt 1 ] ==> if [ $a -lt 10 -a $a -gt 1 ]
then
echo ok
fi
判断一个变量是否为空:
[ -z $? ] 判断执行结果是否为空
[ ! -z $? ] 判断执行结果是否为不为空
wc -l filename 判断文件的行数
# n=`wc -l 1.txt | awk '{print $3}'` # 结果为空
# if [ $n -gt 30 ] ; then echo "ok" ; fi # 命令出错 因为n为空
# if [ -z $n ] ;then echo "null" ; fi # 判断是否为空
文件的判断:
[ -e 1.sh ] 是否存在
[ -f 1.sh ] 是否是文件
[ -d 1.sh ] 是否是目录
[ -r 1.sh ] 文件是否可读
[ -x 1.sh ] 文件是否可执行
[ -w 1.sh ] 文件是否可写
综合小例子:判断奇偶
vim elseDemo.sh
#!/bin/bash
read -p "请输入一个数字:" n
# n2=`echo $n|grep -c '[^0-9]'` # 根据过滤的结果 输出含有非数字的行数
# if [ $n2 -eq 1 ]
if echo $n | grep -q '[^0-9]' # 用一条命令的返回值作为俄判断条件
then
echo "请你输入的不是数字,请重新输入"
exit 1
fi
n1=$[$n%2]
if [ $n1 -eq 0 ]
then
echo "你输入的数字是偶数"
else
echo "你输入的数字是奇数"
fi
exec :常用在脚本的开头 只针对exec下面的命令
exec > /tmp/log 2>&1 #将脚本输出信息重定向到/tmp/log里面
vim date.sh
#!/bin/bash
d=`date +%F`
exec > /tmp/$d.log 2>&1 #将脚本输出信息重定向到其他文件
echo "Begin on `date`"
ls /tmp/sasassa
cd /tmp/sasas
ls /root
echo "End at `date`"
格式:
case $1 in
start)
执行程序1
;;
stop)
执行程序2
;;
.....
*)
其他的都不存在
esac
在选项的下边可以使用活
case $1 in
start|restart) # 或者的关系
执行程序1
;;
stop)
执行程序2
;;
.....
*)
其他的都不存在
esac
case使用实例:
vim case.sh
#!/bin/bash
read -p "请输入一个数字: " n
n1=`echo $n | sed 's/[-0-9]//g'` #可以负号的
if [ ! -z $n1 ] # 判断是否是纯数字 如果是纯数字则为空
then
echo "请输入一个纯数字"
exit 1
# elif [ $n -lt 0 ] || [ $n -gt 100 ]
#then
# echo "数字的范围0-100"
# exit 2
fi
if [ $n -lt 60 ]
then
tag=1
elif [ $n -ge 60 ] && [ $n -lt 80 ]
then
tag=2
elif [ $n -ge 80 ] && [ $n -lt 90 ]
then
tag=3
elif [ $n -ge 90 ] && [ $n -le 100 ]
then
tag=4
fi
case $tag in
1)
echo "不及格"
;;
2)
echo "及各"
;;
3)
echo "良好"
;;
4)
echo "优秀"
;;
*)
echo "不在0-100范围"
;;
esac
- shell脚本编程教程之三 --- 条件分支编程
- shell 脚本编程之条件语句
- shell 脚本编程学习(三) 条件控制,循环控制
- Vbs脚本编程简明教程之三
- shell脚本编程-脚本语法-条件测试
- Shell脚本编程-分支与循环
- shell脚本之条件语句if和分支语句case...esac【shell脚本的学习笔记三】
- shell文本过滤编程(三):awk之条件判断
- shell脚本编程(三)
- shell脚本编程(三)
- Shell编程之判断条件
- shell编程之条件判断
- shell编程之条件测试
- Shell编程之条件判断
- shell脚本编程教程之二 --- 基本的shell编程格式+简单的脚本实例
- Linux Shell编程三:shell脚本基础
- Shell编程中if-elif-else条件分支语句测试
- Linux shell编程之分支判断进阶
- 【Docker】Docker容器与宿主机互相拷贝传递文件
- Ubuntu 安装配置 Tomcat
- WEB项目拾遗之jar包篇
- JS逻辑运算 xxx = xxx || ''
- Java中的单例化
- shell脚本编程教程之三 --- 条件分支编程
- nw.js(node webkit)获取当前app所在的位置
- git diff 指令详解
- 1003. 我要通过!(20)
- 《第六章:对象与设计》阅读笔记
- Selenium操作中文时UnicodeDecodeError: 'utf8' codec can't decode 错误
- 守形数
- Linux压缩命令
- HDU 6216 A Cubic number and A Cubic Number(思维)