Linux条件判断(全)
创始人
2024-05-15 22:45:07
0

1、语法形式(三种)。

  • test 表达式
    案例演示:
[root@docker01 ~]# test 1 -eq 1
[root@docker01 ~]# echo $?
0
[root@docker01 ~]# test 1 -eq 11
[root@docker01 ~]# echo $?
1
  • [ 表达式 ]
    案例演示:
[root@docker01 ~]# [ 1 -eq 1 ]
[root@docker01 ~]# echo $?
0
[root@docker01 ~]# [ 2 -eq 1 ]
[root@docker01 ~]# echo $?
1
  • [[ 表达式 ]]
    案例演示:
[root@docker01 ~]# [[ 1 -eq 1 ]]
[root@docker01 ~]# echo $?
0
[root@docker01 ~]# [[ 1 -eq 112 ]]
[root@docker01 ~]# echo $?
1

注意:上面三种方式,效果等价。
[] 和 [[]] 的区别在于
单个 [ ] 使用字符串对字符串必须加双引号
两个 [[ ]] 不用对字符串变量加双引号
两个 [[ ]] 里面可以使用 &&,||, 而单个不行
两个 [[ ]] 支持c风格
两个 [[ ]] 支持正则

  • 类C风格的数值比较
    整数比较:
注意:在(( ))中,=表示赋值;==表示判断
[root@server ~]# ((1==2));echo $?
[root@server ~]# ((1<2));echo $?
[root@server ~]# ((2>=1));echo $?
[root@server ~]# ((2!=1));echo $?
[root@server ~]# ((`id -u`==0));echo $?[root@server ~]# ((a=123));echo $a
[root@server ~]# unset a
[root@server ~]# ((a==123));echo $?

2、使用判断的常用场景。

  • 整数判断
    常用参数:
判断参数含义
-eq ==相等
-ne <> !=不等
-gt大于
-lt小于
-ge大于等于
-le小于等于
  • 字符串判断
    常用参数:
判断参数含义
-z判断是否为空字符串,字符串长度为0则成立
-n判断是否为非空字符串,字符串长度不为0则成立
string1 = string2判断字符串是否相等
string1 != string2判断字符串是否相不等
  • 文件类型判断
    常用参数:
判断参数含义说明
-e判断文件是否存在(link文件指向的也必须存在)exists
-f判断文件是否存在并且是一个普通文件file
-d判断文件是否存在并且是一个目录directory
-L判断文件是否存在并且是一个软连接文件soft link
-b判断文件是否存在并且是一个块设备文件block
-S判断文件是否存在并且是一个套接字文件socket
-c判断文件是否存在并且是一个字符设备文件char
-p判断文件是否存在并且是一个命名管道文件pipe
-s判断文件是否存在并且是一个非空文件(有内容)is not empty
  • 文件内容是否为空的判断
    常用参数:
判断参数含义说明
-s判断文件是否存在并且是一个非空文件(有内容)is not empty
  • 文件权限判断
    常用参数:
判断参数含义
-r当前用户对其是否可读
-w当前用户对其是否可写
-x当前用户对其是否可执行
-u是否有suid,高级权限冒险位
-g是否sgid,高级权限强制位
-k是否有t位,高级权限粘滞位 (创建者/root才能删除)
  • 文件新旧判断
    常用参数:
    说明:这里的新旧指的是文件的修改时间。
判断参数含义
file1 -nt file2比较file1是否比file2新
file1 -ot file2比较file1是否比file2旧
file1 -ef file2比较是否为同一个文件,或者用于判断硬连接,是否指向同一个inode

3、简单应用。

#!/bin/env bash
#该脚本用于判断输入的网站是否能够正常提供服务。read -p "请输入网址:" addr;
wget -T 2 -t 2 -P ./tmp_files $addr &>/dev/null;
if [ $? -eq 0 ];thenecho	"网址[$addr]可以正常访问";rm -f ./tmp_files/index.*
elseecho	"网址[$addr]不可以访问";
fi

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...