千家信息网

bash算数运算和条件测试语句

发表于:2024-11-15 作者:千家信息网编辑
千家信息网最后更新 2024年11月15日,一、利用bash脚本编程实现算术运算:1)+、-:加运算*、/%:模运算,取余数**|^2)增强型的算术运算符号:+= :let B=B+2 --> let B+=2-= :let B=B-2 -->
千家信息网最后更新 2024年11月15日bash算数运算和条件测试语句

一、利用bash脚本编程实现算术运算:

1)

+、-:加运算

*、/

%:模运算,取余数

**|^


2)增强型的算术运算符号:

+= :let B=B+2 --> let B+=2

-= :let B=B-2 --> let B-=2

*= :let B=B*2 --> let B*=2

/= :let B=B/2 --> let B/=2

%= :let B=B%2 --> let B%=2

3)特殊的增强型算术运算:

let B=B+1 --> let B+=1 --> let B++

let B=B-1 --> let B-=1 --> let B--


B++:先将B的值赋给其他变量,然后再自身+1;

++B:先做自身+1计算,然后再将B的值赋给其他变量;


算术运算方法:

1.let VAR=算术表达式

将算术表达式先行进行算术运算,并将运算得到的结果保存到变量VAR中;

2.VAR=$[算术表达式]

算术表达式中如果有变量引用,可以使用$引用,也可以省略$;

SUM=$[C+B]相当于SUM=$[$C+$B]

3.VAR=$((算术表达式))

算术表达式中如果有变量引用,可以使用$引用,也可以省略$;

4.expr ARGU1 ARGU2 ARGU3

ARGU1和ARGU3必须是数值;

ARGU2必须是运算符号

5.echo "算是表达式" | bc


注意:*号,在某些情况下,需要转义;

变量:存储数据的容器

弱变量:弱类型变量,字符型(默认),数值型(不包括浮点型)


二、条件测试命令:

test EXPRESSION

shell内建命令;


[ EXPRESSION ]

外部命令[ ;


` EXPRESSION `

bash的内部关键字;


/////注意:这类命令一般没有执行结果,只有执行状态返回值;test一般有两种格式,使用方括号时,要注意在条件两边加上空格:

test测试命令有三类测试表达式:

1.数值测试:双目操作符

-eq :被测试的两个数值是否相等,相等为真,不等为假;

-ne :被测试的两个数值是否不相等,不等为真,相等为假;

-gt :被测试的两个数值,左边的是否大于右边的,大于为真,不大于为假;

-lt :被测试的两个数值,左边的是否小于右边的,小于为真,不小于为假;

-ge :被测试的两个数值,左边的是否大于等于右边的,大于等于为真,小于为假;

-le :被测试的两个数值,左边的是否小于等于右边的,小于等于为真,大于为假;


例子:~/aaa的大小是否小于1000字节;

[root@mylab1 ~]# [ $(ls -l aaa | awk '{print $5}') -lt 1000 ] && echo OK || echo "bu OK"

OK


2.字符串测试

1)双目操作符:

==|= :被测试的两个字符串是否相同,相同为真,不同为假;

!= :被测试的两个字符串是否不相同,不同为真,相同为假;

> :被测试的两个字符串在ASCII码表中对应的二进制数值,左边是否大于右边,大于为真,小于为假;

< :被测试的两个字符串在ASCII码表中对应的二进制数值,左边是否小于右边,小于为真,大于为假;

注意:>和<必须用在` EXPRESSION `测试语句中;

=~ :被测试的两个字符串,左侧字符串能否被右侧的PATTERN匹配,能匹配为真,不能匹配为假;


单目操作符:

-z 'STRING':判断指定的字符串是否为空串,空为真,不空为假;

-n 'STRING':判断指定的字符串是否为非空串,非空为真,空为假;


注意:

1.通常情况下,字符串要加引号,单引号或双引号都行,根据实际情况选择即可;

2.[[]]和[]在某些情况下,可能意义不同,要区分使用;

3.表达式两端以及操作符两端都要有空格;


3.文件状态测试

单目测试:

文件的存在性测试:如果被测试的文件存在为真,不存在则为假;

-a | -e

[ -e /backup ]


文件类型测试(先测试存在性):

-b FILE:被测试的文件是否存在并且是否为块设备;存在且为块设备为真,否则为假;

-c FILE:被测试的文件是否存在并且是否为字符设备;

-d FILE:被测试的文件是否存在并且是否为目录文件;

-f FILE:被测试的文件是否存在并且是否为普通文件;

-h|-L FILE:被测试的文件是否存在并且是否为符号链接文件;

-p FILE:被测试的文件是否存在并且是否为管道文件;

-S FILE:被测试的文件是否存在并且是否为套接字文件;


文件的访问权限测试:

-r FILE:被测试的文件是否存在并且当前有效用户是否可读;文件存在并且当前有效用户可读为真,否则为假;

-w FILE:被测试的文件是否存在并且当前有效用户是否可写;

-x FILE:被测试的文件是否存在并且当前有效用户是否可执行;


文件的特殊权限标识测试:

-u FILE:被测试的文件是否存在并且是否设置了SUID权限;文件存在并且设置了SUID权限为真,否则为假;

-g FILE:被测试的文件是否存在并且是否设置了SGID权限;

-k FILE:被测试的文件是否存在并且是否设置了STICKY权限;


文件的所有权测试:

-O FILE:被测试的文件是否存在并且其属主是否为当前有效用户;

-G FILE:被测试的文件是否存在并且其属组是否为当前有效用户的组;


文件内容是否为空:

-s FILE:被测试的文件是否存在且内容不为空,存在且内容不空为真,否则为假;


时间戳测试:

-N FILE:被测试的文件自从上一次被修改之后,是否被修改过;


双目测试:

FILE1 -ef FILE2:测试两个文件是否指向同一个文件系统的相同inode的硬链接;

FILE1 -nt FILE2;被测试的两个文件,FILE1是否比FILE2更新;

FILE1 -ot FILE2:被测试的两个文件,FILE1是否比FILE2更旧;


测试语句中可以添加逻辑运算:

第一种表达方式:

[ -O /tmp/test ] && [ -s /tmp/test ]

[ -O /tmp/test ] || [ -s /tmp/test ]

! [ -O /tmp/test ]


第二中表达方式:

[ -O /tmp/test -a -s /tmp/test ]

[ -O /tmp/test -o -s /tmp/test ]

[ ! -O /tmp/test ]


命令的执行结果:

正常的输出结果


命令的执行状态返回值:

0-255

0:表示命令执行成功

1,2,127:系统保留的;

3-126,128-255:用户自定义的执行状态返回值;


exit [#]

退出当前shell的登录。


当shell脚本运行时,一旦遇到exit命令,将立即结束当前shell进程,同时脚本的运行也将被停止,即exit后面的所有命令都不再被解释执行;


博客:grep、egrep及相应的正则表达式和用法;讲明白每一个元字符的意义,并举例说明;





测试 文件 两个 字符 数值 算术 运算 命令 字符串 表达式 用户 有效 变量 右边 权限 相同 情况 操作符 状态 结果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发立项报告编制 我的世界设置服务器管理员 农行软件开发中心 地址 有服务器的国际服 爱云集网络技术有限公司怎么样 网络安全手报图片 河北手机软件开发价格如何计算 数据库加密粒度不包括 数据库加密mysql 网络安全产品入侵检测系统 服务器设置两个ip地址 微信小程序查询数据库限制 广西链接棋牌软件开发合作 网络安全责任分工细化表 亳州市智联网络技术有限公司 服务器更新和扩容遇到瓶颈 大学生如何积极维护网络安全 华为云服务器显示警告 sap公司软件开发工资 山西app手机软件开发 华中科技大学网络安全学院读博 华为鲲鹏服务器批发厂家 网络安全教育知识群众 免费领永久服务器 数据库系统的FD和主键例题 数据库无法展开数据库列表 设计公司用什么服务器最好 华为手机怎么安装服务器 山西app手机软件开发 服务器防护系统
0