ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
# 1.判断语法 a)  test 条件表达式 b)  \[ 条件表达式 \] c)  \[\[ 条件表达式 \]\]        可匹配正则 =~ d)  判断后执行多个命令 ``` [ 条件1 ] && { 命令1 命令2 } ``` # 2.文件类型判断 ~~~ -e 是否存在 不管是文件还是目录,只要存在,条件就成立 -f 是否为普通文件 -d 是否为目录 -S socket -p pipe -c character -b block -L 软link ~~~ # 3.文件内容判断 ``` \-s 是否为非空文件 ! -s 表示空文件 ``` # 4.文件权限判断 ~~~ -r 当前用户对其是否可读 -w 当前用户对其是否可写 -x 当前用户对其是否可执行 -u 是否有suid -g 是否sgid -k 是否有t位 ~~~ # 5.两个文件的比较判断 ~~~ file1 -nt file2 比较file1是否比file2新 file1 -ot file2 比较file1是否比file2旧 file1 -ef file2 比较是否为同一个文件,或者用于判断硬连接,是否指向同一个inode ~~~ # 6.整数之间的判断 ~~~ -eq 相等 -ne 不等 -gt 大于 -lt 小于 -ge 大于等于 -le 小于等于 ~~~ # 7.字符串之间的判断 ~~~ -z 是否为空字符串 字符串长度为0,就成立 -n 是否为非空字符串 只要字符串非空,就是成立 string1 = string2 是否相等 --等号两边要有空格 string1 != string2 不等 ! 结果取反 ~~~ **注意** **\[ "$1" = "abc" \]**     ** --****判断字符是否相等,变量也要用双引号** # 8.多重条件判断 逻辑判断符号: \-a 和 && 逻辑与 只有两个条件都成立,整个大条件才成立 \[ 1 -eq 1 \] && \[ 2 -ne 3 \] \[ 1 -eq 1 -a 2 -ne 3 \] \-o 和 || 逻辑或 只要其中一个条件成立,整个大条件就成立 \[ 1 -eq 1 -o 2 -ne 2 \] \[ 1 -eq 1 \] || \[ 2 -ne 2 \] **! 逻辑非 优先级****最低** \-a 优先级 比 -o 优先级要高 \[\[\]\] 和(())中可以使用&& || 不能使用 -a -o ![](https://img.kancloud.cn/e1/5e/e15ea01e239084a6fd08ed300ccda27b_784x226.png) # 9.实例 \# \[**$(id -u)**\-eq 0 \] && echo "当前是超级用户"          ** --id -u  username ****可以查看用户****id** $ \[ $UID -eq 0 \] && echo "当前是超级用户" || echo "you不是超级用户" \# ((1**\==**2));echo $?      --C语言风格的数值比较 \# ((1>=2));echo $? 题目:输入一个路径,判断路径是否存在,而且输出是文件还是目录,如果是链接文件,还得输出是有效的连接还是无效的连接 **思路:链接文件也属于文件,所以先判断链接文件,再去判断是否为文件** ~~~ #!/bin/bash read -p "Input your path:" path if [ -e $path -a -L $path ];then echo "$0 is link file" elif [ ! -e $path ] && [ -L $path ];then echo "$0 is not effctive link file" elif [ -d $path ];then echo "$0 is a dirctory" elif [ -f $path ];then echo " $0 is file" else echo "$0 is other file" fi ~~~ **ls -L**** dir****                   -L****可以判断软链接** **\--无效链接用-e判断会不存在** **\-L****如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;**