条件判断语句 ---语法结构、相关参数判断(文件类型、文件权限、文件新旧、整数、字符串)、多重条件判断、流程控制语句 (if语句)、pgrep命令

一、条件判断语法结构

1.条件判断语法格式

1). 格式1: test 表达式

2). 格式2: [ 条件表达式 ]

3). [[ 条件表达式 ]] 支持正则=~ 

2. 用法特别说明

  • [ 内容左右均有空格 ]
  • [[ 内容左右均有空格 ]] 

3. 更多判断

 man test去查看, 很多参数都可以用来进行条件判断

二、条件判断相关参数

1.文件类型判断

-e     ##判断文件是否存在(任何类型文件)
-f     ##判断文件是否存在并且是一个普通文件
-d     ##判断文件是否存在并且是一个目录
-L     ##判断文件是否存在并且是一个软链接文件
-b     ##判断文件是否存在并且是一个块设备文件
-S     ##判断文件是否存在并且是一个套接字文件
-c     ##判断文件是否存在并且是一个字符文件
-p     ##判断文件是否存在并且是一个命名管道文件
-s     ##判断文件是否存在并且是一个非空文件
    应用范例                     含义
[ -f file1 ];echo $?     判断file1是否为普通文件
[ -d file1 ];echo $?     判断file是否为目录
[-L file3 ];echo $?      判断file3是否为软链接
[ ! -d dir1 ];echo $?    判断dir1是否不是目录
[[ -f file1 ]];echo $?   判断file1是否为普通文件
[ -e file1 ];echo $?     判断file1是否存在
-----------------------------------------------
echo $? 上一条命令正确为0 错误为1

条件判断语句 ---语法结构、相关参数判断(文件类型、文件权限、文件新旧、整数、字符串)、多重条件判断、流程控制语句 (if语句)、pgrep命令_第1张图片


2.文件权限判断

-r     ##当前用户对其是否有读权限
-w     ##当前用户对其是否有写权限
-x     ##当前用户对其是否有执行权限
-u     ##当前用户对其是否有suid特殊权限(高级权限冒险位 u+s)
-g     ##当前用户对其是否有guid特殊权限(高级权限强制位 g+s)
-k     ##当前用户对其是否有o+t特殊权限(高级权限粘滞位 o+t)

条件判断语句 ---语法结构、相关参数判断(文件类型、文件权限、文件新旧、整数、字符串)、多重条件判断、流程控制语句 (if语句)、pgrep命令_第2张图片


3.文件新旧判断

    注意: 这里的新旧指的是文件的修改时间。

file1 -nt file2     ##比较file1是否比file2新
file1 -ot file2     ##比较file1是否比file2旧
file1 -ef file2     ##比较是否为同一个文件,或者用于判断硬连接,是否指向同一个inode

条件判断语句 ---语法结构、相关参数判断(文件类型、文件权限、文件新旧、整数、字符串)、多重条件判断、流程控制语句 (if语句)、pgrep命令_第3张图片


4.判断整数

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

条件判断语句 ---语法结构、相关参数判断(文件类型、文件权限、文件新旧、整数、字符串)、多重条件判断、流程控制语句 (if语句)、pgrep命令_第4张图片


5.判断字符串

-z                     ##判断是否为空字符串,字符串长度位0
-n                     ##判断是否为非空字符串,字符串长度大于0
string1  =  string2    ##判断字符串是否相等
string1  == string2    ##shell编程中,判断字符串=与==均可
string1 != string2     ##判断字符串是否不相等

条件判断语句 ---语法结构、相关参数判断(文件类型、文件权限、文件新旧、整数、字符串)、多重条件判断、流程控制语句 (if语句)、pgrep命令_第5张图片

三、多重条件判断

 判断符号         含义                 举例
-a 和 &&     逻辑与,全真则真    [ -f /etc/passswd -a -f /etc/group ] 
                              [ -f /etc/passwd ] && [ -f /etc/group ]

-o 和 ||     逻辑或,全假则假    [ -f /etc/passswd -o -f /etc/group ] 
                              [ -f /etc/passwd ] || [ -f /etc/group ]

条件判断语句 ---语法结构、相关参数判断(文件类型、文件权限、文件新旧、整数、字符串)、多重条件判断、流程控制语句 (if语句)、pgrep命令_第6张图片

特别说明:

  • && 前面的表达式为真,才会执行后面的代码
  •   ||   前面的表达式为假,才会执行后面的代码

范例:

根据当前登录用户uid判断是否为超级用户?提示:uid=0代表超级用户  

条件判断语句 ---语法结构、相关参数判断(文件类型、文件权限、文件新旧、整数、字符串)、多重条件判断、流程控制语句 (if语句)、pgrep命令_第7张图片

四、流程控制语句 (if语句)

只要正确,就要一直往前冲。 
if 条件判断语句;then    
    command1
    command2 
fi
-----------------------------------------------
工作还是考研,人生的分岔路,只能二选一。 
if 条件判断语句;then
    command1
    command2 
else 
    
fi
-----------------------------------------------
考研调剂,选择很多,能录取的只有一个。 
if 条件判断语句;then
    command1 
elif 条件判断语句;then
     command2 
else
    command3 
fi 

拓展

pgrep命令:

以名称为依据从运行进程队列中查找进程,并显示查找到的进程id 

-o        ##仅显示找到的最小(起始)进程号; 
-n        ##仅显示找到的最大(结束)进程号; 
-l        ##显示进程名称; 
-P        ##指定父进程号;pgrep -p 4764  查看父进程下的子进程id 
-g        ##指定进程组; 
-t        ##指定开启进程的终端; 
-u        ##指定进程的有效用户ID

条件判断语句 ---语法结构、相关参数判断(文件类型、文件权限、文件新旧、整数、字符串)、多重条件判断、流程控制语句 (if语句)、pgrep命令_第8张图片

 

你可能感兴趣的:(Linux系统中shell脚本,linux)