bash的算术运算和条件测试方法

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

+,_,*,/

%:模运算,取余数

**|^s

增强型的算数运算符号:

+=

_=

*=

/=

%=

特殊的增强型算数运算:

let B=B+1

let B=B-1

B++:现将B的值赋给其他变量,再自身加1

++B:先加1,再赋值出去

ae

算数运算方法:

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:被测试的两个数值,左边的是否小于等于右边的,小于等于为真,大于为假

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

2,字符串测试

双目操作符:

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

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

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

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

注意:<和>必须用在[[EXPRESSION]]中

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

单目操作符:

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

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

注意:

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

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

3,表达式两端和操作符两端都应有空格;

3,文件状态测试

单目测试:

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

-a|-e

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

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

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

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

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

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

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

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

3,文件的访问权限测试:

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

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

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

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

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

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

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

5,文件的所有权测试:

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

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

6,文件内容是否为空测试:

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

7,时间戳测试:

-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 -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-11-04 07:37:11

bash的算术运算和条件测试方法的相关文章

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

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

shell脚本编程: shell脚本的内容和格式: 首行,绝对行首,shebang(解释器程序的绝对路径) 注释信息:以#占据绝对行首的行: 为了能在程序中突出程序的功能,适当的添加空白行,以分隔不同功能的源代码块: 有一定的缩进 利用bash脚本编程实现算数运算: + - * / % 模运算 取余 **|^ 乘方 增强型算术运算符号: +=  let B=B+1 ---> let B+=1 -= /= *= %= 特殊的增强型算术运算: B=B+1  B+=1  B++ 算数运算方法: 1.l

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

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

linux 笔记--扩展正则表达式,bash脚本—变量,条件判断,算术运算

正则表达式:有两类,一:basic regexp  二:extended(扩展正则表达式)  他们的部分元字符不一样,意义也不相同 grep:使用基本正则表达式或定义的模式中过滤文本的命令,-E;使用扩展正则表达式  -A 数字:不仅显示匹配到的行,还显示后面几行  -B 数字:不仅显示匹配到的行,还显示前几行  -C 数字:不仅显示匹配到的行,还显示前后个几行 扩展正则表达式: 其中 . [] [^] * ^ $ \< \>与grep是相同的, ? 与 \?:意思相同,可以不写\  +:其前

bash脚本编程之三 条件判断及算术运算

练习:写一个脚本,完成以下任务 1.添加5个用户,user1,--,user5 2.每个用户的密码同用户名,而且要求,添加密码完成后不显示passwd命令的执行结果信息 3.每个用户添加完成后,都要显示用户某某已经成功添加 !id user1  &>/etc/null && useradd user1 && echo "user1 " | passwd --stdin user1  &> /etc/null &&

bash脚本编程之条件判断、条件测试

脚本编程: 编程面向过程有如下几种执行方式 顺序执行 选择执行:  如 if, case 循环执行:  如 for, while, until bash的变量类型: 本地变量 set VAR_NAME=value 设置变量赋值 如: set User=Centos unset VAR_NAME 撤消变量赋值 如: unset User=Centos ${VAR_NAME} 作用范围:当前shell进程: 局部变量 local VAR_NAME=value 设置变量赋值 unset VAR_NAM

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

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

bash算术运算和条件测试

常用的bsh算术运算方法 1.$[expression]:其中的表达式可以是纯数字组成的,也可以使用变量引用变量值 [[email protected] ~]# echo $[3+9*3] 30 在引用变量时,可以不使用引用符 [[email protected] ~]# int1=3 [[email protected] ~]# int2=9 [[email protected] ~]# echo $[int1+int2*int1] 30 2.let VAR=EXPRESSION   根据算术

bash 脚本编程3 条件判断和算术运算 (笔记)

小练习:  写一个脚本 判断系统上是否有用户的默认shell 是 bash的 如果有的话就显示有多少这样的用户 否则就显示无此类用户 #!/bin/bash#grep "bash$" /etc/passwd &> /devnullCODE=$? if [ $CODE -eq 0  ]; then        USERNU=`grep "bash$" /etc/passwd | wc -l `        echo "The number