Shell脚本学习笔记——语法之条件测试(1)

  • 测试命令

Shell脚本中测试是用命令来完成的,常见的测试命令包含test 或 [ ,通过检查该类命令的退出码,决定条件测试是否成立。

Shell脚本学习笔记——语法之条件测试(1)_第1张图片

上面这段代码,就完成了一个对于输入值是否等于100的测试。其中,read相当于C语言中的scanf,用于获取输入值;-eq就是equal(等于)的意思,用来比较两个数字是否相等。$?表示上一条指令的退出码。

从运行结果来看,当我们输入100时,退出码为0,表示结果为真;当输入200时,退出码为1,表示结果为假。

与C语言不同,在Shell中,0表示true,非0表示false。

 

  • 测试类型

Shell脚本测试可以用来测试不同的类型,应用于不同的测试场景。常见的测试选项如下:

    (1)整数测试:-eq,-ne,-lt,-gt,-le,-gt

    (2)字符串测试:==,!=,-z,-n

    (3)文件测试:-d,-f,-b,-c

 

  • 测试整数

测试整形只能用测试整形的选项。

Shell脚本学习笔记——语法之条件测试(1)_第2张图片

test 和 [ 都可以用来进行测试,两者使用稍有不同。虽然看起来很奇怪,但是左方括号 [ 确实是一个命令的名字,传给命令的各参数之间应该用空格隔开。命令test 或 [ 的参数形式是相同的,只不过test命令不需要 ] 参数。

 

  • 测试字符串

Shell脚本学习笔记——语法之条件测试(1)_第3张图片

但是,有一种情况要注意:

Shell脚本学习笔记——语法之条件测试(1)_第4张图片

Shell脚本中的变量相当于文本替换,我们可以使用sh -x myshell.sh 将Shell脚本中的每一行展开。通过具体的过程来探究错误的原因:

Shell脚本学习笔记——语法之条件测试(1)_第5张图片

那么我们怎么解决这种情况呢?如果我们就是想验证输入空字符串的结果呢?

Shell脚本学习笔记——语法之条件测试(1)_第6张图片

上面这段代码就为我们提供了一种解决办法:可以在 == 两端添加前缀或者后缀,前后缀的内容不做限制,只要保证==两边添加的内容相同即可。这样,就算我们输入的是一个空字符串,==左边也不会为空,问题就解决了。

 

  • 测试文件

Shell脚本学习笔记——语法之条件测试(1)_第7张图片

字符设备是指在I/O传输过程中以字符为单位进行传输的设备,例如键盘、显示器等。

块设备是将信息存储在固定大小的块中,例如磁盘、U盘等。具有随机访问的特点。

 

  • 多条件测试

1.逻辑反

Shell脚本学习笔记——语法之条件测试(1)_第8张图片

2.逻辑与

Shell脚本学习笔记——语法之条件测试(1)_第9张图片

3.逻辑或

Shell脚本学习笔记——语法之条件测试(1)_第10张图片

 

 

 

 

你可能感兴趣的:(Shell脚本)