shell脚本逻辑判断、if、case用法

来源:https://blog.csdn.net/Powerful_Fyshell

shell脚本逻辑判断语法

格式1:if 条件 ; then 语句; fibash

#!/bin/bash
read -p "input a number:" n
if [ $n -gt 5 ]
then
    echo "1"
fi

格式2:if 条件; then 语句; else 语句; fisocket

#!/bin/bash
read -p "input a number:" n
if [ $n -gt 5 ]
then
    echo "1"
else
    echo "2"
fi

格式3:if …; then … ;elif …; then …; else …; fi.net

#!/bin/bash
read -p "input a number:" n
if [ $n -gt 90 ]
then
    echo "A"
elif [ $n -gt 70 ]
then
    echo "B"
else
    echo "C"
fi

格式4:if 中嵌套 ifcode

#!/bin/bash
read -p "input a number:" n
if [ $n -gt 70 ]
then
    echo "OK"
    if [ $n -gt 90 ]
    then
         echo "A"
    elif [ $n -gt 80 ]
    then
	 echo "B"
    else
	 echo "C"
    fi
else
    echo "???"
fi

补充: -gt 大于(>) -lt 小于 (<) -ge 大于等于 (>=) -le 小于等于 (<=) -eq 等于 (==) -ne 不等于 (!=)对象

可使用 && || 结合多个条件blog

大于5而且小于10:get

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

第二种写法:input

if [ $a -gt 5 -a $a -lt 10 ]; then

#-a表示:andit

大于5或小于3:

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

第二种写法:

if [ $b -gt 5 -o $b -lt 3 ]; then

#-o表示or

if判断文件或目录的属性

[ -f file ] 判断是不是普通文件,且存在 [ -d file ] 判断是不是目录,且存在 [ -e file ] 判断文件或目录是否存在 [ -r file ] 判断文件是否可读 [ -w file ] 判断文件是否可写 [ -x file ] 判断文件是否可执行

补充: 1.若是判断对象为socket等特殊文件,可使用-e判断是否存在

2.root用户对文件的读写比较特殊,即便一个文件没有给root用户读或者写的权限,root用户照样能够读或者写(x:执行权限除外)

3.取反使用感叹号:

if [ ! -f filename ]

if判断的一些特殊用法

判断变量为空时:

if [ -z "$a" ]; then ...

判断变量不为空时:

if [ -n "$a" ]; then ...

判断命令成功时:

if ls /tmp/test.sh; then ...

#判断文件是否存在的用法,当ls命令执行成功时,要怎样...

将产生的信息重定向到/dev/null:

if ls /tmp/test.sh &> /dev/null; then ...

#无论ls命令执行是否成功,都将输出的信息流写入到/dev/null,不打印

判断文件是否包含关键字:

if grep -q '123' /tmp/test.sh; then ...

#当文件包含关键字时,要怎样...,-q:包含关键字时,不输出匹配到的信息

if [ $a -gt 5 ]的另外一种写法:

if (($a>5)); then ...

#[ ] 中不能使用<,>,==,!=,>=,<=这样的符号,但双括号中能够

shell脚本中case判断用法

case  变量名 in 
   value1)    
        command  
	    ;;
   value2)      
        command  
        ;; 
   *)  
        commond 
        ;;     
     esac

在case中,能够在条件中使用|,表示或的意思:
    2|3)     
	    command
	    ;;

示例:

#!/bin/bash
read -p "input a number: " n
#判断输入内容是否为空
if [ -z "$n" ]
then
    echo "Please input a number."
    exit 1
fi
#判断输入内容是否含有非数字
n1=`echo $n|sed 's/[0-9]//g'`
if [ -n "$n1" ]
then
 echo "Please input a number."
 exit 1
fi
#当输入内容非空且为纯数字时,开始判断
if [ $n -lt 60 ] && [ $n -ge 0 ]
then
    t=1
elif [ $n -ge 60 ] && [ $n -lt 80 ]
then
    t=2
elif [ $n -ge 80 ]  && [ $n -lt 90 ]
then
    t=3
elif [ $n -ge 90 ] && [ $n -le 100 ]
then
    t=4
else 
    t=0
fi

case $t in
    1)
		echo "D"
        ;;
    2)
        echo "C"
        ;;
    3)
        echo "B"
        ;;
    4)
        echo "A"
        ;;
    *)
        echo "The number range must be 0-100."
        ;; 
esac
相关文章
相关标签/搜索