shell脚本、if判断、case判断

20.5 shell脚本中的逻辑判断

  • if 判断
#if 表示中文的 如果
;格式1:if条件; then 语句; fi
[[email protected] ~]# a=5;if [ $a -gt 3 ];then echo ok; fi
ok

;参考文本格式如下:
#!/bin/bash
a=5
if [ $a -gt 3 ] #-gt 表示 >=
then
    echo ok
fi

;格式2:if条件; then 语句; else 语句; fi
[[email protected] shell]# a=5;if [ $a -gt 6 ];then echo ok;else echo no ok;fi
no ok

;参考文本格式如下:
#!/bin/bash
a=5
if [ $a -gt 6 ]
then
    echo ok
else
    echo no ok
fi

;格式3:if...; then ...; elif ...; then ...; else ...; fi
[[email protected] shell]# a=5;if [ $a -gt 10 ];then echo 0k;elif [ $a -gt 6 ];then echo $a\>6;else echo $a\<6;fi
5<6

;参考文本格式如下:
[[email protected] shell]# sh -x if3.sh
+ a=5
+ ‘[‘ 5 -gt 10 ‘]‘
+ ‘[‘ 5 -gt 6 ‘]‘
+ echo ‘5<6‘
5<6
[[email protected] shell]# cat if3.sh
#!/bin/bash
a=5
if [ $a -gt 10 ]
then
    echo ">10"
elif [ $a -gt 6 ]
then
    echo $a">6"
else
    echo $a"<6"
fi

逻辑判断吧表达式:
if [ $a -gt $b ];
if [ $a -lt 5 ];
if [ $b -eq 10 ] 等
-gt(>); -lt(<); -ge(>=);
-le(<=); -eq(==); -ne(!=)
注意到处都是空格

#另一种写法:
[[email protected] shell]# a=5;if (($a>10));then echo OK;else echo NO;fi
NO
[[email protected] shell]# a=5;if (($a>=5));then echo OK;else echo NO;fi
OK
[[email protected] shell]# a=5;if (($a>10));then echo OK;elif (($a>6));then echo $a">6";else echo $a"<6";fi
5<6
  • 可以使用&& || 结合多个条件

if [ $a -gt 5 ] && [ $a -lt 10 ]; then
if [ $b -gt 5 ] || [[ $b -lt 3 ]; then

20.6 文件目录属性判断

  • [ -f file ]判断是否是普通文件,且存在
[[email protected] shell]# cat file.sh
#!/bin/bash
f="/tmp/taoyuan"
if [ -f $f ]
then
    echo $f exist
else
    touch $f
fi

;没有文件,创建文件
[[email protected] shell]# sh -x file.sh
+ f=/tmp/taoyuan
+ ‘[‘ -f /tmp/taoyuan ‘]‘
+ touch /tmp/taoyuan

;文件已经存在
[[email protected] shell]# sh -x file.sh
+ f=/tmp/taoyuan
+ ‘[‘ -f /tmp/taoyuan ‘]‘
+ echo /tmp/taoyuan exist
/tmp/taoyuan exist
  • [ -d file ]判断是否是目录,且存在
[[email protected] shell]# cat file1.sh
#!/bin/bash
f="/tmp/taoyuan"
if [ -d $f ]
then
    echo $f exist
else
    mkdir $f
fi

[[email protected] shell]# sh -x file1.sh
+ f=/tmp/taoyuan
+ ‘[‘ -d /tmp/taoyuan ‘]‘
+ mkdir /tmp/taoyuan
  • [ -e file ]判断文件或者目录是否存在
[[email protected] shell]# cat file2.sh
#!/bin/bash
f="/tmp/taoyuan"
if [ -e $f ]
then
    echo $f exist
else
    mkdir $f
fi
[[email protected] shell]# sh -x file2.sh
+ f=/tmp/taoyuan
+ ‘[‘ -e /tmp/taoyuan ‘]‘
+ echo /tmp/taoyuan exist
/tmp/taoyuan exist
  • [ -r file ]判断文件是否可读
[[email protected] shell]# f="/tmp/taoyuan";if [ -r $f ];then echo $f read;else echo file reservation;fi
/tmp/taoyuan read
  • [ -w file ]判断文件是否可写
[[email protected] shell]# f="/tmp/taoyuan";if [ -w $f ];then echo $f write;else echo $f File unable to write;fi
/tmp/taoyuan write
  • [ -x file ]判断文件是否可执行
[[email protected] shell]# f="/tmp/taoyuan";if [ -x $f ];then echo $f x file;else echo $f File no execution;fi
/tmp/taoyuan x file

20.7 if特殊用法

  • if [ -z "$a" ] 这个表示当量a的值为空时会怎么样
[[email protected] shell]# cat if.sh
#!/bin/bash
f="/tmp/lalal"
if [ ! -f $f ]
then
    echo "$f not exist."
    exit
fi
n=`wc -l $f`
if [ -z "$a" ] #变量需要双引号
then
    echo error
    exit
elif [ $n -gt 100 ]
then
    echo OK
fi
[[email protected] shell]# sh if.sh
/tmp/lalal not exist.
  • if [ -n "$a" ] 表示当变量a的值不为空
[[email protected] shell]# if [ -n if.sh ]; then echo ok;fi
ok
#可以判断一个文件是否为空

[[email protected] shell]# if [ -n "$b" ]; then echo $b;else echo "b is null";fi
b is null
  • if grep -q ‘123‘ 1.txt;then 表示如果1.txt中含有‘123‘的行时会怎么样
[[email protected] shell]# if grep -w ‘user‘ /etc/passwd; then echo "user exist"; fi
user:x:1000:1000:user:/home/user:/bin/bash
user exist
[[email protected] shell]# if grep -wq ‘user‘ /etc/passwd; then echo "user exist"; fi
user exist
#grep -q 不显示过滤的结果
  • if [ ! -e file ];then 表示文件不存在时会怎么样
  • [] 中不能使用<,>,==,!=,>=,<=这样的符号

20.8-20.9 case判断

  • shellcase判断脚本案例
[[email protected] shell]# cat case.sh
#!/bin/bash
read -p "Please enter the score:" n
if [ -z "$n" ]
then
    echo "For the input score."
    exit 1
fi

n1=`echo $n|sed ‘s/[0-9]//g‘`
if [ ! -z "$n1" ]
then
    echo "Non-numeric input."
    exit 1
fi

if [$n -lt 60 ] && [ $n -ge 0 ]
then
    tag=1
elif [ $n -ge 60 ] && [ $n -lt 80 ]
then
    tag=2
elif [ $n -ge 80 ] && [ $n -lt 90 ]
then
    tag=3
elif [ $n -ge 90 ] && [ $n -le 100 ]
then
    tag=4
else
tag=0
fi

case $tag in
    1)
       echo "C"
    ;;
    2)
       echo "B"
    ;;
    3)
       echo "A"
    ;;
    4)
       echo "A+"
    ;;
    *)
      echo "Please enter a scale of 0-100."
    ;;
esac

原文地址:http://blog.51cto.com/3622288/2069596

时间: 2024-10-03 14:56:32

shell脚本、if判断、case判断的相关文章

shell脚本中实现自动判断用户有无密码

在最近完成老师布置的作业的时候遇到了如何让shell脚本中的命令自动判断一个用户是否已设置密码的问题,虽然看似不是很难的一个问题,但是在这一功能实现的过程中却包含了许多细小的而重要的知识.刚开始小编对此很是头疼,虽然我们查看一个用户是否有密码并不是很难,直接cat /etc/shadow这个文件看看密码位是否有加密的字符就行了,但是让命令自己去判断和匹配就不是很顺利了,小编上网查看后,并没有得到很好的答案,大多数都是人工查看的答案,并不适用于shell脚本中自动的判断,所以在认真对比/etc/p

shell脚本进阶之循环判断

p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; font-size: 14.0pt; font-family: 等线 } h1 { margin-top: 15.6pt; margin-right: 0cm; margin-left: 0cm; margin-bottom: .0001pt; text-align: justify; line-he

shell脚本编程:条件判断if语句使用小结

shell脚本编程,有三种控制结构分别是:顺序结构,条件判断结构,循环结构.本文将总结shell脚本中条件判断结构的使用方法. 条件判断结构分为三种,单分支,双分支,多分支,等结构. 单分支结构的语法如下: if [ expression  ] ;then statement1 statement2 ......... fi 双分支语法结构: if [ expression ];then statement1 statement2 ..... else statement3 statement4

Linux shell脚本之 if条件判断

IF条件判断 1.基本语法: if [ command ]; then 符合该条件执行的语句 fi 2.扩展语法: if [ command ];then 符合该条件执行的语句 elif [ command ];then 符合该条件执行的语句 else 符合该条件执行的语句 fi 3.语法说明: bash shell会按顺序执行if语句,如果command执行后且它的返回状态是0,则会执行符合该条件执行的语句,否则后面的命令不执行,跳到下一条命令. 当有多个嵌套时,只有第一个返回0退出状态的命令

shell脚本之 if,case,for的用法

目录一.条件选择:if语句二.条件判断:case语句三.for循环 一.条件选择:if语句 单分支if 判断条件;then 条件为真的分支代码fi 例子:判断一个数字是否等于10#!/bin/bashread -p '输入一个数字' numif [ $num -eq 10 ];thenecho 该数字等于10fi 双分支if 判断条件; then 条件为真的分支代码else 条件为假的分支代码fi例子:判断一个数字是否大于10#!/bin/bashread -p '输入一个数字' numif [

shell脚本基础 数值运算 判断 及if语句

数值运算 整数运算[三种,随便掌握一种即可]expr 数字 运算符 数字 [[email protected] ~]# expr 1 + 1(运算符号都是+ - * / 注:*需要\*.%是取余,余数只有0 1 2)2[[email protected] ~]# expr 45 \* 145 echo$[数字 运算符 数字][[email protected] ~]# echo $[89*89+454848*874851]397924235569 leti++ == i=i+1i+=2 == i

shell脚本的测试与判断的基础实施

一.条件测试:判断条件是否成立 1.条件测试的类型:文件测试:整数比较:字符串比较:逻辑测试 2.条件测试的语法:[ 操作符  条件表达式]等于 test  操作符  条件表达式 3.文件测试: 1)文件的类型:-(普通文件),d(里面),c(字符设备),s(套接字).b(块设备).p(管道文件,可以用于屏幕演示) 2)文件判断符:-f  文件,-d目录,-e文件是否存在,-rwx判断是否有权限  [操作符  文件] 4.整数比较 1)语法:[ 数字1   操作符  数字2] 2)操作符:-eq

shell脚本 - 日期比较与判断

比较2个日期的相差天数 1. 脚本参考 脚本1: #!/bin/bash #格式化过期日期,格式化过期日期完整时间以当前时间作为参考! expday="2018-04-11 `date +%T`" echo "Expire day is $expday" #当前日期时间格式为stamp时间戳 todays=`date +%s` echo "Today is $(date +"%F %T")" #以下2种方式做时间的四则运算,分

shell 脚本中使用case查看登陆用户

#! /bin/bash case $USERNAME in "student")echo u r using student;; "leonard")echo u r using leonard;; *)echo u r using other account;; esac

Shell脚本之:case

case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构. case语句的语法 case 值 in 模式1) command1 command2 command3 ;; 模式2) command1 command2 command3 ;; *) command1 command2 command3 ;; esac 取值后面必须为关键字 in,每一模式必须以右括号结束.其中;;与其他语言中的 break 类似 下面是case的一个例子 #!/bin