shell中的条件表达式
条件表达式返回的结果都为布尔型
真为1,假为0
条件测试的表达式
[expression]
[[expression]]
test expression
这三种条件表达式的效果是一样的
比较符
整数比较
-eq:比较两个整数是否相等,$A -eq $B
-ne:测试两个整数是否不等,不等则为真,等则为假
-gt:大于为真,小于为假
-lt:小于为真,大于为假
-ge:大于或者等于
-le:小于或者等于
-e File 测试文件是否存在
-f File 测试文件是否是普通文件
-d File 测试指定路径是否是目录
-r File 测试文件是否有写的权限
-w File 测试文件是否有写的权限
-x File测试文件是否有执行的权限
-z:判断指定的变量是否存在值
-n:测试字符是否为空 非空为真(0)
-s:文件的大小非0时为真
!:逻辑非
双目:
== 相等为真
!= 不等为真
> 大于为真
< 小于为真
-a:逻辑与 都为真才为真
-o:逻辑或 一个为真就为真
test expression
expression为条件表达式
if test (表达式为真)
if test !表达式为假
test 表达式1 –a 表达式2 两个表达式都为真
test 表达式1 –o 表达式2 两个表达式有一个为真
摩根定律
!(A -a B)= !A -o !B
!(A -o B)= !A -a !B
逻辑符
&&:逻辑与,都为真则为真
如果第一个条件是真的,需要对第二个条件进行判断
如果第一个条件是假的,不需要对第二个条件进行判断,结果已经确定为假。
||:逻辑或,一个为真则为真
当第一个条件为真的时候,不在去判断第二条件,因为第一个表达式已经决定了整个表达式为真
只有当第一个表达式为假的时候才回去判断第二个表达式
应用于脚本:
这是一个用来比较两个整数大小的脚本
#!/bin/sh
read -p "Pls input two nums:" a b
[ -z $a ] || [ -z $b ] && {
echo "Pls input two nums"
exit
} expr $a + &>/dev/null
RETRAVL1=$? expr $b + &>/dev/null
RETRAVL2=$? test $RETRAVL1 -eq -a $RETRAVL2 -eq ||{
echo "Pls input two nums"
exit
} [ $a -lt $b ] && echo "$a < $b" [ $a -eq $b ] && echo "$a = $b" [ $a -gt $b ] && echo "$a > $b"
[root@BASE scripts]# sh var.sh
Pls input two nums:1 2
1 < 2
[root@BASE scripts]# sh var.sh
Pls input two nums:2 1
2 > 1
[root@BASE scripts]# sh var.sh
Pls input two nums:1 1
1 = 1
[root@BASE scripts]# sh var.sh
Pls input two nums:a
Pls input two nums
[root@BASE scripts]# sh var.sh
Pls input two nums:1
Pls input two nums
[root@BASE scripts]# sh var.sh
Pls input two nums:1 2 3
说明:一下是学习shell的时候练习的小脚本,其中也包含了一些条件判断的语句,因为刚学,写的比较烂,众网友不看也罢。
注:该脚本用于测试某目录下的某文件是否存在
#!/bin/sh
Path=/server/scripts
File=test.sh if [ ! -d $Path ]
then
echo "No such dir,is creatinig $Path"
mkdir $Path -p
fi if [ ! -f $Path/$File ]
then
echo "No such file,is creating $File"
touch $Path/$File
exit
fi echo "ls -l $Path/$File"
ls -l $Path/$File
~ 另一种写法;
#!/bin/sh
Path=/serer/scripts
File=test.sh
if [ ! -e $Path/$File ]
then
echo "No such file or directory.is creating......"
mkdir -p $Path &>/dev/null
touch $Path/$File
exit 0
fi
echo $(ls -l $Path/$File)
内存小于400M就报警的shell脚本
#!/bin/sh
LeftMem=`free -m|grep "Mem"|tr -s " "|cut -d" " -f4` //free -m 以兆为单位显示 if [ $LeftMem -lt ]
then
echo "mem is not enough" |mail -s "mem warninig at $(date +%F-%X)" @.com //要先安装sendmail
fi
shell中的条件表达式的更多相关文章
- Shell中的条件测试和循环语句
1.条件测试:test或[ 如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为0 运行结果: 带与.或.非的测试命令[ ! EXPR ] : E ...
- shell(shell变量、条件表达式、流程控制)
本章内容: 变量 运算 if语句 for语句 while语句 break.continue 实例 shell变量 1.shell变量简介 变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数 ...
- shell中的条件判断以及与python中的对比
shell中比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示条件测试. 注意:这里的空格很重要.要确保方括号的空格. if ....; then ...
- shell中if条件字符串、数字比对,[[ ]]和[ ]区别
目录 shell 括号 test 和 []符号 [[]] 符号 let和(())符号 "[]" , "[[]]" 和 "(())"对比 sh ...
- Lua 中的条件表达式
下面这代码段看上去很熟悉,就是C#里面的条件表达式,很多其它语言也都有这么一个条件表达式. ; ; string c = "c"; string d = "d" ...
- linux shell中的条件判断语句
http://bbs.chinaunix.net/thread-396805-1-1.html shell 判断语句 流程控制 "if" 表达式 如果条件为真则执行then后面的部 ...
- shell中的条件判断、参数以及变量替换
文章转自: http://www.cnblogs.com/maxupeng/archive/2011/07/02/2096551.html 一.test命令 test命令是shell内部命令,它计算作 ...
- shell中的条件判断if和测试
(一)条件判断 if 中-z 到 -d 的意思 [ -a file ] 若file存在,则为真. [ -b file ] 若file存在且是一个块特殊文件,则为真. [ -c file ] 若file ...
- shell中的条件判断
read命令 命令的语法: read [参数] 变量名 常用的参数如下: -t timeout 设定超时时间. -p prompt 设定提示信息,该提示信息将会显在光标前. 条件测试: 条件测试可以判 ...
随机推荐
- ArcGIS制图表达Representation实战篇3-控制点
ArcGIS制图表达Representation实战篇3-控制点 by 李远祥 这一章讲述的是一个非常专业的名词,叫控制点.此控制点非测绘行业术语的控制点,而是制图表达里面的控制点,所以不能混为一谈. ...
- cmake工具链
命令project() enable_language()try_compile() 变量CMAKE_<LANG>_COMPILERCMAKE_<LANG>_COMPILER_ ...
- C#属性和字段
属性 属性是一种用于访问对象或类的特性的成员.属性是字段的自然扩展,这两者都是具有关联类型的命名成员.而且访问字段和属性的语法是相同的.然而,与字段不同,属性不表示存储位置.相反属性具有访问器,这些访 ...
- 怎么在ubuntu上运行php代码?
1. 首先,你需要安装Apache2. sudo apt-get update sudo apt-get install apache2 当安装完以后,Apache就已经开始运行啦,你可以进行测试,通 ...
- AMD的cpu如何安装Mac OS
AMD的cpu如何安装Mac OS 经过一个月的折腾,终于成功的安装了自己的Mac系统,并且能够成功的启动.在这里分享一下自己安装的经验. 为了安装方便,有不影响原来的系统的使用 ...
- Winfrom 程序打包及安装
前言 近期被公司外派到驻空调厂的项目组,支援一个TCP相关的程序对接.主要是做智能门禁系统,然后主要是统计出实时的进出人数. 我这边能作为服务端,门禁设备作为客户端,整个流程并不算复杂,根据协议来写, ...
- ftp服务搭建
文件传输服务 主配置文件目录/etc/vsftpd/vsftpd.conf 首先安装ftp服务器 yum install vsftpd 默认存放文件的目录 /var/ftp/pub 匿名登陆 创建一 ...
- 前端发展态势 && 前端工作流程个人浅析
于在未开启cleartype的情况下,一些中文字体在非偶数字号下的显示效果欠佳,所以一般建议使用12.14.16.18.22px等偶数字号.也就 是对某个分辨率选择离它最近的偶数字号.例如:屏幕横向分 ...
- 关于fibonacci数列用JS写的一点小优化
直接上代码 var month = prompt("请输入月数:") function fibobo(x) { //先定义一个已有前两项的数组,用来作缓存 var arr = [1 ...
- .Net3月份开发札记
筛选数据 需求:如果数据库中存在OrderNum相同,且IsDefault不同的记录,那么IsDefault值为0的记录将替换值为1的记录(IsDefault值为1的记录不展示). 由于查出来的数据不 ...