linux的shell测试运算,Linux初学之bash算数运算和条件测试语句

利用bash脚本编程实现算数运算:

一、运算符号:

1.普通运算符号:+ - * / %  **|^

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

+= : let b=b+2 --> let b+=2

-=

*=

/=

%=

3. 特殊的增强型运算:

let b=b+1 -->  let b+=1 --> let b++

let b--

b++:先将b的值赋予给其他变量,自身在+1

++b:自身先+1在赋值

算数运算方法:

1.let  VAR=算术表达式

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

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

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

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

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

4. expr ARGU1 ARGU2 ARGU3

ARGU1和ARGU3必须是数值

ARGU2必须是运算符号

例子:  [root@localhost ~]# expr 5 + 8

13

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

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

例子:统计/etc/fstab   /etc/passwd   /etc/issue三个文件中,以字母r开头的行数的总和

变量:存储数据的容器

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

条件测试命令:

test;EXPRESSION

shell内建命令

[EXPRESSION] :

外部命令

`EXPRESSION` :

bash的内部关键字

注意:这类命令一般没有执行结果,只有执行状态返回值

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

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

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

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

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

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

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

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

例子:# test 4 -eq 10

# echo $?

1

2. 字符串测试

双目操作符:

==|= :推荐用==:表示被测试的两个字符串是否相同,相同为真,不同为假

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

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

<:>

注意:必须用在`EXPRESSION`测试语句中

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

单目操作符:

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

-n ‘字符串’:判定指定的字符串是否为非空串,不空为真,空为假

注意:1.通常情况下字符串要加引号,单引号或双引号都可以,根据实际情况选择

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

3. 表达式和操作符两端都要有空格

3. 文件状态测试

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

-a或-e  [ -e /etc/shadow]

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

-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权限;文件存在且设置了SGID权限为真,否则为假

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

文件内容是否为空:

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

文件的所有权测试:

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

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

时间戳测试:

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

双目测试:

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

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

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

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

1.

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

![ -o/tmp/test ]

2.

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

[ !-o /tmp/test ]

命令的执行结果:

正常输出结果

命令的执行状态返回值:

0-255

0

1,2,127:系统保留

3-126,127-255:用户自定义

注意:当shell脚本运行时,一旦遇到exit命令时,将立即结束当前shell尚锦城,同时脚本的运行也将被停止,即

之后的命令不再被执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值