Shell 从入门到精通系列 (第二章 Shell条件测试)

本章内容:

  • 条件测试: 主要介绍shell程序中的文件,变量,字符串数值,以及逻辑等条件测试
  • 条件判断语句: 介绍基本的if,if else,以及if elif语句的使用方法
  • 多条件判断语句ca字符串逆序输出se: 主要介绍case语句的基shelly-lan本语法,以及使用case语句来解决一些实际问题
  • 运算符: 介绍shell中常字符串数组用的运算符的使用方法,例如 算术运算符,位运算符,自增,自减运算符

​条件测试:

  1. 条件测试的基本语法:

在shell程序中,用户可以使用测试语句unix全称来测试指定的条件表达式的条件的真或者假,当指定的条件为真时,整个条件测试的返回值为0;反之,如果条件为假时,则条件测试的返回值为非0

  1. 条件测试的两个内部命令

test 和[ (左中括号) 两个都是shell中两个用来测试条件表达式真假的内部命令

testdjango怎么读的使用方法:

test 1 -eq字符串 2 : 判断 整数1和2是否相等

test 'string'或者 test -z 'string' : 测试字符串是否为空

test -e file : 测试指定的文件是否存在

执行结果:

判断 整数1和2是否相等,返回值为非0,false

测试字符串unix全称是否为空

测试指定的文件是否存在


                                            Shell 从入门到精通系列 (第二章 Shell条件测试)

[ 的使用方法: (注意在表达式跟中括号之间有一个空格)

[ 1 -eq 2 ] : 判断 整数1和2是否相等


                                            Shell 从入门到精通系列 (第二章 Shell条件测试)[ -z 'string' ] : 测试字符串是否为空


                                            Shell 从入门到精通系列 (第二章 Shell条件测试)


                                            Shell 从入门到精通系列 (第二章 Shell条件测试)

[ -e file ] : 测试指定的文件是否存在


                                            Shell 从入门到精通系列 (第二章 Shell条件测试)

3.运算符的优先级顺序字符串测试

​在shell中,用户可以通系统运维工资一般多少过5中运算符来对字符shell编程串进行操作

运算符

说明

string

判断指定的字字符串数组符串字符串数组是否为空

-z string

判断字符串是否为空字符串

string1 != string2

判断两个字符串是否不相等

-n string

判断字符串是否为空字符串

string字符串类型1 = string2

判断指定的两个字符串是否相等

说明系统运维工资一般多少: 在以上这5中运算符中,除了string只能使用test进行测试之外,其他的4中可以分别使用test和[ 来进行测试

案例1:

测试字符串是否为空

#定义一个变量:

[root@django ~]# a='abc'

#用test变量测试字符串是否为空

[root@django ~]# test $a

#输出结果为0,运算符中优先级最高的是表示变量a不为空

[root@django ~]# echo $?

0

#用-n测试变量a是否不为空

[root@django ~]#django摩托车 test -n "$a"

#结果为0,说明变量a不为空

[root@django ~]# echo $?

0

#用-z测试变量a是django是前端还是后端否为空

[root@django ~]# test -z "$a"

#结果为1,说明变量a不为空

[root@django ~]# echo $?

[root@django ~]# 1

案例2:

测试两个字符串:

#定义变量a

[root@django ~]# a="hello"

#定义变量b

[root@django ~]# b="world"

#比较两个字符串是否相等

[root@django ~]# [ "$a" = "$b" ]

#字符串逆序输出输出测试结果为1,表示$a和$b不相等

[root@django ~]# echo $?1

#测试$a和$b是否不相等

[root@django ~]# test "$a" != "$b"django摩托车

#结果为0,说明$a和$b不相等字符串怎么写

[root@django ~]# echo $?

0

案例3:

​空格对字符串测试的影响

在实际操作中会遇到字符串有django框架主要用来做什么空格的情况

#定义变量a

[root@django ~]# a='Hello world '

#定义变量b

[root@django ~]# b='Hello world'

#测试变量a与变量b是否相shell怎么读

[root@django ~]# [ "$a" = "$b" ]

[root@django ~]# echo $?

1

分析: 由于变量a末尾有一个空格,所以两个变量值不相等

案例4:

​字母大小写对字符串测试的影响

#定义变量a

[root@django ~]# a='Hello world'Unix

#定义变量b

[root@django ~]# b='hello world'

#由于变量b中字符串赋值h为小写,所以两个变量值不相等

[root@django ~]# [ "$a" = "$b" ]

[root@django ~]# echo $?

1

案例5:

​运算符两边必须要保留空格

#定义变量a

[root@django ~]# a="Apple"

#定义变量b

[root@django ~]# b="Orange"

#由于=号两边没有空格,所以表达式会shelly-lan变为: test "Apple=Orage",变成了测试某个运算符号包括哪些字符串是否为空,所以结果为真

[root@django ~]# test "$a"="$b"

[root@django ~]# echo $?

0

4.整数测试

​整数测试也有两种形式:

testunix和linux num1django框架 op num2

或者

[ num1 op num20 ]

其中 num1 和 num2是参与比较的两个整数,可以是常量或者变量, op表字符串长度示运算符

常见的整数运算符

运算unix是系统软件么

说明

num1 -gt num2

比较num1是否大于num2

num1 -shell编程100例lt num2

比较num1是否小于num2

num1 -ge num2

比较num1是否大于等于num2

num1 -shellleshell编程实验报告 num2

比较num1是否小于等于num2

num1 -eq num2

比较num1是否等于django和flask的区别num2,如果相等,测试结果为0

num1 -ne num2

比较num1 和num2是否不相等,如果num1和运算符号包括哪些num2不相等django框架主要用来做什么,测试结果为0

案例1:

​比较10和20是否相等,结果为1说明不相等


                                            Shell 从入门到精通系列 (第二章 Shell条件测试)

案例2:

比较10大于20 ,Unix10小于20


                                            Shell 从入门到精通系列 (第二章 Shell条件测试)

案例3shell是什么意思中文:

​比较变量和常unix和windows的区别数的大小


                                            Shell 从入门到精通系列 (第二章 Shell条件测试)

案例4:

​比较两个变量值的大小


                                            Shell 从入门到精通系列 (第二章 Shell条件测试)

特别提示1:

不可以使用 = 或者 != 运算符来比较两个整运算符有哪些数是否相等,因为这django教程两个运算符是用来比较字符串的


                                            Shell 从入门到精通系列 (第二章 Shell条件测试)

看起来结果是一运算符号的优先级由高到低样的,其实[ 12 = 13 ]的真实是这样: [ "12" = "13" ]

特别提示2:

以上的运算符只能用作整数比较,其他类型则不可以,由于变量x为Django小数,所以比较的时候报错


                                            Shell 从入门到精通系列 (第二章 Shell条件测试)

5.shell是什么意思中文文件测试

​文件测试主要是判断文件是否存在,文件是否可读写

文件测试语法:

test op file 或者 [ op file ] ,其中opdjango怎么读表示操作符,file字符串有哪些表示要测试的文件名

常用的文件操作符shell是什么意思中文:

操作符

说明

-a file

判断文件是否存在

-b file

文件是否存在,且为块文件

-c fdjango框架ile

文件是否存字符串怎么输入在,且为字符文件

-d file

文件是否存在,且为目录

-e file

同 -a file

-x file

文件是否存在 且可执行

-s file

文件的长度是否大于0,或者文件为非空文件

-L file

文件是否存在且为符号链接文件

-r file

unix怎么读件是否存在 且为可读

-u file

文件是否设置suid位

-f file

文件存在,且为常规文件

-w file

文件是否存在shell编程且为科协

从以上表格可以分析: 文件操作符的功能主要是检测文件是否存在,文件的类型,以及shell是什么意思中文文件的访问权限

案例1:

#判断文件是否存在

[root@django ~]# test -a abc.django是前端还是后端txt

[root@django ~]# echo $?

0

[root@django ~]# [ -a file3 ]

[root@django ~]# echo $?

1

#判断文件是否为目录

[root@django ~]# test -d dir1

[root@django ~]# echo $?

1

#判断文件是否为常规文件

[root@django ~]# test -f abc.txt

[root@django ~]# echo $?

0

#判断文件是否为非空文件

[root@django ~]# test -s abc.txt

[root@django ~]# echo $?

0

#判断文件是否我块文件

[root@django ~]# test -b file1

[root@django ~]# echo $?

1

#判断/dev/sda是否为块文件

[root@django ~]# test -b /dev/sd运算符中优先级别排序a

[root@django ~]# echo $?

0

#判断/dev/tty是否为字符文件

[root@django ~]# test -c /devunix全称/tty

[root@django ~]# echo $?

0

案例2:

​判断文shell脚本件的权限

#判断文件是否可写

[root@django ~]# test -w abshelly-lanc.txt

[root@django ~]# echo $?

0

#判断文件是否可读

[root@django ~]# test字符串长度 -r abc.txt

[root@django ~]# echo $?

0

#判断文件是否可执行

[root@django ~]# test -x abc.txt

[root@django ~]# echo $?

1

#设置文件的setuishellfishd权限,然后判断

[root@django ~]# ll abc.txt

-rwxr-xr-x 1 root root 3 Feb 20 14:51 abc.txt

[root@django ~]# chmod u+s abc.txt

[root@django ~]# ll abc.txt

-rwsunix和linux的区别r-xr-x 1 root root 3 Feb 20 14:51 abc.txt

[root@django ~]# test -u abc.txt

[root@django ~]# echo $?

0

6django菜鸟教程.逻辑操作符

​前面介绍的字符串测系统运维工程师试,整数测试,以及文件测试都是提供了一个运算符的优先级顺序测试条件. 而shell编程实验报告在shell中,经常遇到同时判断多个条件的情况,这个时候就要用到逻辑操作符

常用的逻辑操作符:

操作符

说明

!expression

逻辑非,expression的条件为真时,结果为假

expressdjango怎么读ion1 -o expression2

逻辑或,两个条件只要有一个为真,则结果为真

expression1 -aexpression2shell怎么读

逻辑与,两个条件都为真时,shellfish结果为真

案例1:

[root@django ~]# a=35

[root@django ~]# test "$a" -gt 20 -a "$a" -lt 60

[root@django ~]# echo $?

0

[root@django ~]#

案例2:

​判断当前用户对某个文件是否有Unix写入权限

[root@django ~]# [ -e file1 -a -w file1 ]

[root@django ~]# echo $?

1