bash的算术运算和条件测试语句

shell脚本编程:

shell脚本的内容和格式:

首行,绝对行首,shebang(解释器程序的绝对路径)

注释信息:以#占据绝对行首的行;

为了能在程序中突出程序的功能,适当的添加空白行,以分隔不同功能的源代码块;

有一定的缩进

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

+

*

/

% 模运算 取余

**|^ 乘方

增强型算术运算符号:

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

-=

/=

*=

%=

特殊的增强型算术运算:

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测试命令有三类测试表达式:

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

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

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

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

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

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

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

例:

test 整数1 –eq 整数2          整数相等

test 整数1 –ge 整数2          整数1大于等于整数2

test 整数1 –gt 整数2          整数1大于整数2

test 整数1 –le 整数2          整数1小于等于整数2

test 整数1 –lt 整数2          整数1小于整数2

test 整数1 –ne 整数2          整数1不等于整数2

2.字符串测试

双目操作符:

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

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

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

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

注意:大于号和小于号必须用在[[EXPRESSION]]

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

例:

str1 = str2 检查str1是否和str2相同

str1 != str2 检查str1是否和str2不同

str1 > str2 检查str1是否比str2大

str1 < str2 检查str1是否比str2小

str1 =~ str2 检查str1是否能被str2的PATTERN匹配

单目操作符:

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

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

例:

-z str1 检查str1的长度是否为0

-n str1 检查str1的长度是否非0

注意:

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:被测试的文件是否存在并且当前有效用户是否可执行……

例:

对于目录/tmp/testdir1,如果当前有效用户有读、写和执行的权限,那么就在该目录中创建一个文件;否则,显示“没有权限不能创建文件”的信息。

test -r /tmp/testdir1 -a -w /tmp/testdir1 -a -x /tmp/testdir1 && touch FILENAME /tmp/testdir1 || echo

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

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

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

-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更旧

注意:在使用"["简写test时,左中括号后面的空格和右括号前面的空格是必需的,如果没有

空格,Shell不可能辨别表达式何时开始何时结束.

也就是说test option file可以全部改写成:[ option file ]

例如:

test –w File

改写成

[ –w File ]

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

第一种表达方式:

[ -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后面的所有命令不再执行

时间: 2024-10-13 20:28:35

bash的算术运算和条件测试语句的相关文章

bash的算术运算和条件测试语句基础

编程语言包括问题空间和解空间 ,问题空间就是使用人类的自然语言描述的任务,解空间就是使用编程语言描述任务的实施步骤和显示的最终结果. 编程思想,就是能够把编程语言所提供的语法格式,随时随地的转换成解决问题的思路.我们学习编程语言的目的就是将目的空间和解空间对应起来,最直接的办法就是使用解空间的语言习惯来进行思考. 对于编程语言的学习的步骤:1.学习编程语言的语法格式:2.学习工具的使用(库.命令):3.算法:4.数据结构 shell脚本编程: shell脚本的内容和格式:首行.绝对行首.sheb

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+

bash的算术运算与条件测试

在使用bash过程中,一些简单的算术运算我们可以用bash来完成. 利用bash脚本编程实现算术运算,下面列举一些常用的运算符: +.- 加减 *./ 乘除 %:模运算,取余数 **|^ 幂运算 增强型的算术运算符号: += :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

shell脚本中的算术运算和条件测试语句

shell脚本编程实现算术运算有: +.- *./ 模运算 % 乘方 ** 或 ^ 特殊的增强型算术运算: ++ -- 算术运算方法 1.let命令 VAR=算术表达式 将算术表达式先行进行算术运算并将运算结果保存到变量VAR中 2.VAR=$[算术表达式]   []内如果引用变量,可以使用$ 也可以省略掉$ 3.VAR=$((算术表达式)) 即把[]换成(()) 4.expr ARG1 ARG2 ARG3 ARG1和ARG3必须是数值,ARG2必须是运算符 5.echo "算术表达式"

shell条件测试语句实例-测试apache是否开启

终于理解了shell条件测试语句”!=“和"-n"的用法区别,于是有了如下的shell脚本,做为练习. 第一种方法:测试apache是否开启?字符串测试 #!/bin/bash # www.jquerycn.cn web=`/usr/bin/pgrep httpd` if [ -n "$web" ]; //$web返回值是否为空 then echo "httpd is running" else /etc/init.d/httpd start f

Bash编程入门之条件测试(三)

条件测试语法 在bash的各种流程控制结构中通常要进行各种测试,然后根据测试结果执行不同的操作,有时也会通过与if等条件语句相结合,让我们可以方便的完成判断. 语法 支持三种格式的条件测试语法 test<测试表达式> [ <测试表达式> ] [[ <测试表达式> ]] 格式1和格式2是等价的,格式3为扩展的test命令 在[[]]中可以使用通配符进行匹配.&&.||.>.<等操作符可以应用与[[]]中,但不能应用与[]中. 范例 文件存在则输

九、while 条件循环语句、case 条件测试语句、计划任务服务程序

4.3.3 while条件循环语句 while条件循环语句是一种让脚本根据某些条件来重复执行命令的语句,它的循环结构往往在执行前并不确定最终执行的次数,完全不同于for循环语句中有目标.有范围的使用场景.while循环语句通过判断条件测试的真假来决定是否继续执行命令,若条件为真就继续执行,为假就结束循环.while语句的语法格式如图4-21所示. 图4-21  while循环语句的语法格式 接下来结合使用多分支的if条件测试语句与while条件循环语句,编写一个用来猜测数值大小的脚本Guess.

Shell中的条件测试语句

Shell有条件测试语句,一般用test命令或是[]命令来完成,它们是条件判断语句if~then语句的基础,特别是[]命令.下面我们讲解一些条件测试语句. 1. test命令实现条件测试 对于检测系统中某些文件是否存在,或者相关属性时,test命令很好用. 其基本语法如下: test命令还可以测试字符串: test命令还可以测试整数之间的关系: 2. []命令来实现条件测试 使用中括号[]命令来实现条件测试功能时,要特别注意.因为中括号在很多地方都有用到,比如通配符和正则表达式.而在用[]表示条

Shell条件测试语句及三种if语句

7 - Shell_条件操作测试及if语句 要使Shell脚本程序具备一定的"智能",面临的第一个问题就是如何区分不同的情况以确定执行何种操作.例如,当磁盘使用率超过95%发送警告:当备份目录不存在时能够自动创建:当源码编译程序的配置失败则不再继续安装等. Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0,表示成功,值为其他时,表示失败. 使用专门的测试工具-test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值0为成立) 使用te