shell脚本中的逻辑判断、文件目录属性判断、if特殊用法、case判断

简介:

shell脚本中的逻辑判断

逻辑表达式

在[ ]中括号中:
以下是数字的比较
-lt:=little than 小于
-le:=little && equal 小于等于
-eq:=equal 等于
-ne:=no equal 不等于
-gt:=greater than 大于
-ge:=greater && equal 大于等于

字符串的比较
<,<=,==,!=,>,>=

1、if then fi
[root@centos7 shell]# vi test.sh

#!/bin/bash
a=9
if [ $a -gt 2 ]
then
echo "ok"
fi

2、多条件判断
if then elif then elif then fi

3、
条件A&&条件B:并且
条件A||条件B:或者

4、shell脚本中if经常用于判断文档的属性,比如判断是普通文件还是目录文件,判断文件是否有读、写、执行权限等。if常用的选项有以下几个:

-e:判断文件或目录是否存在
-d:判断是不是目录文件以及是否存在
-f:判断是不是普通文件以及是否存在
-r:判断是否有读权限
-w:判断是否有写权限
-x:判断是否有执行权限

如果文件不存在:! -f
[root@centos7 shell]# vi test.sh

#!/bin/bash
if [ ! -f /tmp/filename ]
then
echo '不存在'
fi

5、
if [ -z "$a" ]:表示当变量a的值为空时会怎样
if [ -n "$a" ]:表示当变量a的值不为空时会怎样

#!/bin/bash
n=cat /tmp/test.txt
if [ -z $n ]
then
echo '为空'
else
echo '不为空'
fi

6、
判断某参数存在:
[root@localhost sbin]# vim if1.sh
#!/bin/bash
if 
grep -wq 'user1' /etc/passwd
then
echo "user1 exist."
fi
[root@localhost sbin]# sh if1.sh

判断某参数不存在:
[root@localhost sbin]# vim if2.sh
#!/bin/bash
if 
! grep -wq 'user1' /etc/passwd
then
echo "no user1"
fi
[root@localhost sbin]# sh if2.sh 
no user1

case判断

格式:
case 变量名 in
value1)
commond1
;;
value2)
commod2
;;
value3)
commod3
;;
esac

在case中,可以在条件中使用“|”,表示或的意思,如:
2|3)
commond
;;

    #!/bin/bash
read -p "Please input a number: " n
if [ -z "$n" ]
then
    echo "Please input a number."
    exit 1
#“exit 1”表示执行该部分命令后的返回值
#即,命令执行完后使用echo $?的值
fi

n1=`echo $n|sed 's/[0-9]//g'`
#判断用户输入的字符是否为纯数字
#如果是数字,则将其替换为空,赋值给$n1
if [ -n "$n1" ]
then
 echo "Please input a number."
 exit 1
#判断$n1不为空时(即$n不是纯数字)再次提示用户输入数字并退出
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
#tag的作用是为判断条件设定标签,方便后面引用
case $tag in
    1)
        echo "not ok"
        ;;
    2)
        echo "ok"
        ;;
    3)
        echo "ook"
        ;;
    4)
        echo "oook"
        ;;
    *)
        echo "The number range is 0-100."
        ;;

esac





















本文转自方向对了,就不怕路远了!51CTO博客,原文链接: http://blog.51cto.com/jacksoner/2045021,如需转载请自行联系原作者



相关文章
|
14天前
|
JavaScript 前端开发 Shell
Shell 脚本编程保姆级教程(上)
Shell 脚本编程保姆级教程(上)
|
8天前
|
Shell Linux C语言
|
10天前
|
Shell 网络安全
shell脚本 配饰ssh
【7月更文挑战第15天】
11 4
|
14天前
|
网络协议 Shell Linux
Shell脚本配置Centos静态ip地址
这是一个用于在CentOS上设置静态IP的Shell脚本摘要: - 脚本交互式获取用户输入的IP地址、子网掩码、网关和DNS。 - 使用`sed`命令动态更新`/etc/sysconfig/network-scripts/ifcfg-ENS33`配置文件。 - 修改`BOOTPROTO`为`static`,并设置IP、NETMASK、GATEWAY和DNS1字段。 - 用`systemctl restart network`重启网络服务。 - 提示用户新配置的静态IP信息。
|
20天前
|
Shell Linux
Linux Shell 脚本入门教程:开启你的自动化之旅
Shell是一种计算机程序,它充当了用户与操作系统之间的接口。在Linux系统中,Shell允许用户通过命令行界面(CLI)来控制计算机。Shell脚本则是一种使用Shell语言编写的脚本,它可以自动执行一系列的命令,帮助用户实现任务自动化,提高工作效率。
|
26天前
|
Shell
蓝易云 - 简单shell脚本的编写教程
以上就是编写一个基本Shell脚本的步骤。当然,Shell脚本可以做的远不止这些,你可以使用变量,控制结构(如if语句和循环),以及各种Shell命令和功能来编写更复杂的脚本。
24 1
|
13天前
|
Shell
Shell 脚本编程保姆级教程(下)
Shell 脚本编程保姆级教程(下)
|
1月前
|
监控 Shell Linux
Linux的Shell脚本详解
Linux的Shell脚本详解
|
1月前
|
Shell
shell脚本
shell脚本
23 2
|
22天前
|
移动开发 网络协议 Shell
查看IP访问量的shell脚本汇总
查看IP访问量的shell脚本汇总