Shell-(三)Shell条件判断

本文最后更新于:May 10, 2022 pm

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

目录

基本语法: test condition 或者 [ condition ](注意括号前后有空格)

条件非空即为true,[ aa ]返回true,[ ]返回false。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
root@VM-12-8-ubuntu:~# a=long
root@VM-12-8-ubuntu:~# test $a = loong # 注意要用空格隔开
root@VM-12-8-ubuntu:~# echo $? # 0表示执行正确,非0表示执行出错
1
root@VM-12-8-ubuntu:~# test $a = long
root@VM-12-8-ubuntu:~# echo $?
0
root@VM-12-8-ubuntu:~# [ $a = loong ] # 注意要用空格隔开
root@VM-12-8-ubuntu:~# echo $?
1
root@VM-12-8-ubuntu:~# [ $a = long ]
root@VM-12-8-ubuntu:~# echo $?
0

常用判断条件

整数比较

  • -eq:等于
  • -ne:不等于
  • -lt:小于
  • -le:小于等于
  • -gt:大于
  • -ge:大于等于

如果是字符串之间的比较,用等号(=)判断相等,用(!=)判断不等。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
root@VM-12-8-ubuntu:~# [ 3 -eq 3 ]
root@VM-12-8-ubuntu:~# echo $?
0
root@VM-12-8-ubuntu:~# [ 3 -ne 3 ]
root@VM-12-8-ubuntu:~# echo $?
1
root@VM-12-8-ubuntu:~# [ 3 -lt 3 ]
root@VM-12-8-ubuntu:~# echo $?
1
root@VM-12-8-ubuntu:~# [ 3 -le 3 ]
root@VM-12-8-ubuntu:~# echo $?
0
root@VM-12-8-ubuntu:~# [ 3 -gt 3 ]
root@VM-12-8-ubuntu:~# echo $?
1
root@VM-12-8-ubuntu:~# [ 3 -ge 3 ]
root@VM-12-8-ubuntu:~# echo $?
0

文件权限判断

  • -r:有读的权限。
  • -w:有写的权限。
  • -x:有执行的权限。

示例:

1
2
3
4
5
6
7
8
9
10
11
touch filetest # 创建一个文件

root@VM-12-8-ubuntu:~/myscript# [ -r filetest ]
root@VM-12-8-ubuntu:~/myscript# echo $?
0
root@VM-12-8-ubuntu:~/myscript# [ -w filetest ]
root@VM-12-8-ubuntu:~/myscript# echo $?
0
root@VM-12-8-ubuntu:~/myscript# [ -x filetest ]
root@VM-12-8-ubuntu:~/myscript# echo $?
1

文件类型判断

  • -e:文件存在。
  • -f:文件存在且是一个常规的文件。
  • -d:文件存在且是一个目录。

示例:

1
2
3
4
5
6
7
8
9
root@VM-12-8-ubuntu:~/myscript# [ -e filetest ]
root@VM-12-8-ubuntu:~/myscript# echo $?
0
root@VM-12-8-ubuntu:~/myscript# [ -f filetest ]
root@VM-12-8-ubuntu:~/myscript# echo $?
0
root@VM-12-8-ubuntu:~/myscript# [ -d filetest ]
root@VM-12-8-ubuntu:~/myscript# echo $?
1

本文作者: 墨水记忆
本文链接: https://tothefor.com/DragonOne/b429be7.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!