2018.4.18 17周1次课

十七周一次课(4月18日)

20.5 shell脚本中的逻辑判断

20.6 文件目录属性判断

20.7 if特殊用法

20.8/20.9 case判断

20.5 shell脚本中的逻辑判断

格式1不带else:if 条件 ; then 语句; fi

编辑if1.sh文件:vi if1.sh

#!/bin/bash/

a=5

if [ $a -gt 3 ]

then

echo ok

fi

格式2带有else:if 条件; then 语句; else 语句; fi

#!/bin/bash/

a=1

if [ $a -gt 3 ]

then

echo ok

else

echo nook

fi

格式3带有elif:if …; then … ;elif …; then …; else …; fi

#!/bin/bash/

a=5

if [ $a -lt 4 ]

then

echo "<4"

elif [ $a -gt 6 ]

then

echo ">6"

else

echo nook

fi

逻辑判断表达式:if [ $a -gt $b ]; if [ $a -lt 5 ]; if [ $b -eq 10 ]等

使用[ ]形式:-gt (>); -lt(<); -ge(>=); -le(<=);-eq(==); -ne(!=) 注意到处都是空格,方括号两边,逻辑判断两边都要有空格

使用(( ))形式:可以在双小括号的里面可以用>、<、=这样的符号。

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

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

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

20.6 文件目录属性判断

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

[ -f file ]判断是否是普通文件,且存在

[ -d file ] 判断是否是目录,且存在

[ -e file ] 判断文件或目录是否存在

vi file.sh

#!/bin/bash

f="/tmp/aminglinux"

if [ -f $f ]

then

echo $f exist

else

touch $f

fi

vi file2.sh

#!/bin/bash

f="/tmp/aminglinux"

if [ -e $f ]

then

echo $f exist

else

touch $f

fi

[ -r file ] 判断文件是否可读

[ -w file ] 判断文件是否可写

[ -x file ] 判断文件是否可执行

格式:if [ -e filename ]; then command; fi

vi file3.sh

#!/bin/bash

f="/tmp/aminglinux"

if [ -r $f ]

then

echo $f readable

fi

还有另一种写法:

[ -f $f ] && rm -f $f  等同于

if [ -f $f ]

then

rm -f $f

fi

[ -f $f ] || touch $f  等同于

if [ ! -f $f ]

then

touch $f

fi

20.7 if特殊用法

if [ -z "$a" ]  这个表示当变量a的值为空

vi if4.sh

#!/bin/bash

n=`wc -l /tmp/abc`

if [ -z "$n" ]

then

echo error

exit

elif [ $n -gt 100 ]

then

echo ">100"

fi

if [ -n "$a" ] 表示当变量a的值不为空

if [ -n file.sh ];then echo ok;fi //当判断文件时,可以不用加双引号,用变量时要用双引号引起来

if grep -q '123' 1.txt; then  表示如果1.txt中含有'123'的行时会怎么样

if grep -wq 'zabbix' /etc/passwd;then echo "zabbix exist";fi

if [ ! -e file ]; then 表示文件不存在时会怎么样

if ! grep -wq 'user1' /etc/passwd;then echo "use1 not exist";fi

if (($a<1)); then …等同于 if [ $a -lt 1 ]; then…

[ ] 中不能使用<,>,==,!=,>=,<=这样的符号

20.8/20.9 case判断

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

在case程序中,可以在条件中使用|,表示或的意思, 比如    
2|3) 
    command
    ;;

vi case.sh

#!/bin/bash

read -p "Please input a number: " n

if [ -z "$n" ]

then

echo "Please input a number."

exit 1

#1就echo $?的值

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

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 "不及格"

;;

2)

echo "及格"

;;

3)

echo "良好"

;;

4)

echo "优秀"

;;

*)

echo "The number range is 0-100."

;;

Esac

原文地址:http://blog.51cto.com/415326/2105132

时间: 2024-12-09 08:33:10

2018.4.18 17周1次课的相关文章

2018.4.23 17周4次课

十七周4次课(4月23日) 20.20 告警系统主脚本 20.21 告警系统配置文件 20.22 告警系统监控项目 20.20 告警系统主脚本 创建告警系统的目录: [[email protected] /usr/local/sbin]# mkdir mon [[email protected] /usr/local/sbin]# ls mon  nginx_log_rotate.sh [[email protected] /usr/local/sbin]# cd mon [[email pro

2018.4.19 17周2次课

十七周二次课(4月19日) 20.10 for循环 20.11/20.12 while循环 20.13 break跳出循环 20.14 continue结束本次循环 20.15 exit退出整个脚本 20.10 for循环 for循环结构是在日常运维工作中使用最频繁的循环结构. 语法:for 变量名 in 条件; do -; done 数字循环:vi for1.sh #!/bin/bash sum=0 for i in `seq 1 3` #循环的条件还可以引用系统命令的执行结果(如seq 1

2017.12.18 2周1次课

2017.12.18 二周第一次课 2.6 相对和绝对路径 什么是一个文件的路径呢 简单地说,就是这个文件存放的地方.只要你告诉系统某个文件的路径,系统就可以找到这个文件 Linux中,存在着绝对路径和相对路径. 绝对路径:路径一定是由根目录"/"开头的,不管在哪个目录下,都能通过绝对路径找到这个文件. 相对路径 :是你所在位置的路径,以当前目录开头的. 查看当前目录的路径,使用命令[pwd] ".ssh/authorized_keys"就是相对路径,相对"

2018.3.1 10周2次课

十周第二次课(3月1日) 11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机 11.14/11.15 Apache和PHP结合 配置httpd支持php httpd主配置文件/usr/local/apache2.4/conf/httpd.conf vim /usr/local/apache2.4/conf/httpd.conf   //修改以下4个地方 ServerName 搜索ServerName,把#ServerName www.example

2018.1.9 5周2次课

五周第二次课(1月9日) 7.6 yum更换国内源 7.7 yum下载rpm包 7.8/7.9 源码包安装 7.6 yum更换国内源 1.恢复之前备份的文件 2. 进入"/etc/yum.repos.d"目录 3.删除"CentOS-Base.repo"文件 4.下载"163.repo"文件 wget http://mirrors.163.com/.help/CentOS7-Base-163.repo curl -O http://mirrors

2018.1.16 6周2次课

六周第二次课(1月16日) 9.4/9.5 sed 9.4/9.5 sed 其实grep工具的功能还不够强大,它实现的只是查找功能,而不能把查找的内容替换.以前用vim操作文档的时候,可以查找也可以替换, 但只限于在文本内部操作,而不能输出到屏幕上.sed工具以及后面要介绍的awk工具就能把替换的文本输出到屏幕上,而且还有其他更丰富的功能.sed和awk都是流式编辑器,是针对文档的行来操作的. sed  '/x/'p filename:匹配x字符 sed  -n  '/x/'p  filenam

2018.1.25 7周4次课

七周四次课(1月25日) 10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例 需求:只针对filter表,预设策略INPUT链DROP, 其他两个链ACCEPT,然后针对192.168.37.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口. 这个需求不算复杂,但是因为有多条规则,所以最好写成脚本的形式.脚本内容如下: vi /usr/local/sbin/ip

2018.1.29 8周1次课

八周一次课(1月29日) 10.23 linux任务计划cron 10.24 chkconfig工具 10.25 systemd管理服务 10.26 unit介绍 10.27 target介绍 10.23 linux任务计划cron 其实大部分系统管理工作都是通过定期自动执行某个脚本来完成的, 那么如何定期执行某个脚本呢? 这就要借助Linux的cron功能了 Linux任务计划功能的操作都是通过crontab命令来完成的, 其常用的选项有以下几个. -u:表示指定某个用户,不加- u选项则为当

2018.1.8 5周1次课

五周第一次课(1月8日) 7.1 安装软件包的三种方法 7.2 rpm包介绍 7.3 rpm工具用法 7.4 yum工具用法 7.5 yum搭建本地仓库 7.1 安装软件包的三种方法 rpm工具 yum工具 源码包 在Windows系统下安装软件很简单,只要双击后缀为.exe的文件,然后根据提示连续单击"下一步" 按钮即可. 然而在Linux系统下安装软件就没那么容易了,因为我们不是在图形界面下.所以,你必须学会如何在Linux下安装软件 前面我们多次提到了yum命令,它是Red Ha