MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

shell条件判断(shell条件判断命令)

2025-01-26 22:36 huorong 精选文章 5 ℃ 0 评论



shell 开头

  • 以sh后缀
  • 开头#注释,表明采用何种解释器
#!/bin/bash 
<<ABC
    author:cheonghu
    date:2020-05-06
    desc:shell demo
ABC

文件权限

$ ll 
total 4
-rw-r--r-- 1 root root 88 Apr 24 22:15 demo.sh
  • 其中可以看到,demo.sh没有可执行权限;但是 bash demo.sh可以运行
 $ ./demo.sh
 -bash: ./demo.sh: Permission denied

 $ bash ./demo.sh
 shell demo


$ chmod 755 ./demo.sh 
# or
$ chmod u+x ./demo.sh  # 给当前拥有者添加可执行权限
$ ll 
-rwxr--r-- 1 root root 88 Apr 24 22:15 demo.sh

条件判断

字符串非空

  • n 测试是否为非空,推荐""
$ [ -n "$TEST" ] && echo Y || echo F
Y
  • z 测试是否为空
 $ [-z $TEST] && echo Y

字符串比较

$ [ $USER == root ]
# or 
$ test $USER == root

整数比较

  • -gt
  $ [ 1 -gt 2 ]; echo $?
  1
  # $? 查看上一条命令结束码;0 正确 非0,false
  • -eq
  • -ne
  • -lt
  • -le
  • -ge (大于或等于)

文件属性判断

  • -e 文件或者目录是否存在
$ [ -e get.sh ] && echo "存在" || echo "不存在"
存在
  • -d 判断存在且为目录
  • -f
  • -L 软连接 (类似快捷键,跨分区,但是删除不可用;硬链接,相反;)
  • -p 管道
  • -r 读权限
  • -w 写权限
  • -x 执行权限;root 也必须有x,才能执行
  • -s 非空

[] 与 [[]]

  • 通用
  • 数值大小比较
  $ [ 5 -gt 8 ]
  $ [[ 5 -lt 8  ]]
  • 字符串非空比较
 $ [ -z "" ] && echo y || echo n 
  y
  $ [ -n '13' ] && echo y || echo n 
  y 
  • 文件属性
  $ [ 9.txt -nt get.sh ] && echo y || echo n
  $ [[ 9.txt -nt get.sh ]] && echo y || echo n
  • 不同
  • 逻辑运算&&
 $ [[ 5 == 9 && 5 == 4 ]] && echo y || echo n 
 n

 # []使用&& 
 $[ 5 == 9 && 5 == 4 ] && echo y || echo n
 -bash: [: missing `]'

 $[ 5 == 9 -a 5 == 4 ] && echo y || echo n
 n 
  • 逻辑运算||
 $[[ 5 == 8 || 6 == 9 ]]
 $[ 5 == 8 -o 6 == 9 ]
  • 符号使用>,<
 $[[ 5 > 9 ]] - 排序比较
  $[ 5 > 9 ] - 部分支持
  • 正则使用
 # 仅仅是字符比较
  $ test = '123'
  $ [ $test == 1* ] && echo y || echo n 
  n
  
  # 正则比较
  $ [[ $test == 1* ]] && echo y || echo n 
  y

  # a是否为数字
  $ a=2 
  $[[ $a == [0-9] ]]&& echo y || echo n 
  y
  • =~
 #  正则匹配,是否包含0-9
$b='a23'
$[[ $b =~ [0-9] ]]&& echo y || echo n 
y

Tags:le lt

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言