Shell脚本IF条件判断和判断条件总结

您所在的位置:网站首页 shell脚本if语句中逻辑或 Shell脚本IF条件判断和判断条件总结

Shell脚本IF条件判断和判断条件总结

2023-12-22 02:01| 来源: 网络整理| 查看: 265

IF条件判断 1、基本语法: if [ command ]; then 符合该条件执行的语句 fi 2、扩展语法: if [ command ];then 符合该条件执行的语句 elif [ command ];then 符合该条件执行的语句 else 符合该条件执行的语句 fi 3、语法说明: bash shell会按顺序执行if语句,如果command执行后且它的返回状态是0,则会执行符合该条件执行的语句,否则后面的命令不执行,跳到下一条命令。 当有多个嵌套时,只有第一个返回0退出状态的命令会导致符合该条件执行的语句部分被执行,如果所有的语句的执行状态都不为0,则执行else中语句。 返回状态:最后一个命令的退出状态,或者当没有条件是真的话为0。 注意: 1、[ ]表示条件测试。注意这里的空格很重要。要注意在'['后面和']'前面都必须要有空格 2、在shell中,then和fi是分开的语句。如果要在同一行里面输入,则需要用分号将他们隔开。 3、注意if判断中对于变量的处理,需要加引号,以免一些不必要的错误。没有加双引号会在一些含空格等的字符串变量判断的时候产生错误。比如[ -n "$var" ]如果var为空会出错 4、判断是不支持浮点值的 5、如果只单独使用>或者 STRING2 ] 如果 “STRING1”字典排序在“STRING2”后面则返回为真。 数值判断 [ INT1 -eq INT2 ] INT1和INT2两数相等返回为真 ,= [ INT1 -ne INT2 ] INT1和INT2两数不等返回为真 , [ INT1 -gt INT2 ] INT1大于INT2返回为真 ,> [ INT1 -ge INT2 ] INT1大于等于INT2返回为真,>= [ INT1 -lt INT2 ] INT1小于INT2返回为真 ,b且a b )) && (( a < c )) [[ $a > $b ]] && [[ $a < $c ]] [ $a -gt $b -a $a -lt $c ] 9:a>b或a b )) || (( a < c )) [[ $a > $b ]] || [[ $a < $c ]] [ $a -gt $b -o $a -lt $c ] 10:检测执行脚本的用户 ? 1 2 3 4 if [ "$(whoami)" != 'root' ]; then echo "You have no permission to run $0 as non-root user." exit 1 ; fi 上面的语句也可以使用以下的精简语句 [ "$(whoami)" != 'root' ] && ( echo "You have no permission to run $0 as non-root user."; exit 1 ) 11:正则表达式 ? 1 2 3 4 doiido= "hero" if [[ "$doiido" == h* ]];then echo "hello,hero" fi ============其他例子============ 1、查看当前操作系统类型 ? 1 2 3 4 5 6 7 8 9 10 11 #!/bin/sh SYSTEM=`uname -s` if [ $SYSTEM = "Linux" ] ; then echo "Linux" elif [ $SYSTEM = "FreeBSD" ] ; then echo "FreeBSD" elif [ $SYSTEM = "Solaris" ] ; then echo "Solaris" else echo "What?" fi 2、if利用read传参判断 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 #!/bin/bash read -p "please input a score:" score echo -e "your score [$score] is judging by sys now"   if [ "$score" -ge "0" ]&&[ "$score" -lt "60" ];then echo "sorry,you are lost!" elif [ "$score" -ge "60" ]&&[ "$score" -lt "85" ];then echo "just soso!" elif [ "$score" -le "100" ]&&[ "$score" -ge "85" ];then echo "good job!" else echo "input score is wrong , the range is [0-100]!" fi 3、判断文件是否存在 ? 1 2 3 4 5 6 7 8 9 10 #!/bin/sh today=`date -d yesterday +%y%m%d` file= "apache_$today.tar.gz" cd /home/chenshuo/shell if [ -f "$file" ];then echo "OK" else echo "error $file" >error.log mail -s "fail backup from test" loveyasxn924 @126 .com



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3