Shell脚本应用(五)if语句

  1. 单分支的if语句:


if 条件测试操作

then

命令序列

fi



例:判断挂载点目录是否存在,若不存在则新建此目录。



[[email protected] script]# cat chkmountdir.sh

#!/bin/bash

MOUNT_DIR="/media/cdrom"

if [ ! -d $MOUNT_DIR ]

then

mkdir -p $MOUNT_DIR

fi

[[email protected] script]# chmod +x chkmountdir.sh

[[email protected] script]# ./chkmountdir.sh

[[email protected] script]# ls /media/

cdrom  RHEL_6.5 x86_64 Disc 1



例:若当前用户不是root,则提示报错:



[[email protected] script]# cat chkifroot.sh

#!/bin/bash

if [ "$USER" != "root" ];then

echo "错误:非root用户,权限不足!"

exit 1

fi

fdisk -l /dev/sda

[[email protected] script]# chmod +x chkifroot.sh

[[email protected] script]# ./chkifroot.sh

Disk /dev/sda: 53.7 GB, 53687091200 bytes

255 heads, 63 sectors/track, 6527 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x000e59bd

Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          64      512000   83  Linux

Partition 1 does not end on cylinder boundary.

/dev/sda2              64        6528    51915776   8e  Linux LVM

[[email protected] script]# su - oracle

[[email protected] ~]$ source /script/chkifroot.sh

错误:非root用户,权限不足!



2.双分支的if语句:



if  条件测试操作

then

命令序列1

else

命令序列2

fi



例:编写一个连通性的测试脚本,通过位置参数$1提供目标主机地址。然后根据ping检测结果给出相应的提示。



[[email protected] script]# cat ping.sh

#!/bin/bash

ping -c 3 -i  0.2 -W 3 $1 &> /dev/null

if [ $? -eq 0 ]

then

echo "Host $1 is up."

else

echo "Host $1 is down."

fi

[[email protected] script]# chmod +x ping.sh

[[email protected] script]# ./ping.sh 192.168.1.11

Host 192.168.1.11 is up.

[[email protected] script]# ./ping.sh 192.168.1.12

Host 192.168.1.12 is down.



例:通过shell脚本检查httpd服务是否运行;



[[email protected] script]# cat chkhttpd.sh

#!/bin/bash

/etc/init.d/httpd status &>/dev/null

if [ $? -eq  0 ];then

echo "监听地址:$(netstat -anpt |grep httpd | awk ‘{print $4}‘)"

echo "进程PID号:$(pgrep -x httpd)"

else

echo "警告:httpd服务不可用"

fi

[[email protected] script]# chmod +x chkhttpd.sh

[[email protected] script]# ./chkhttpd.sh

警告:httpd服务不可用

[[email protected] script]# service httpd start

[[email protected] script]# ./chkhttpd.sh

监听地址::::80

进程PID号:2398



3.多分支if语句



if 条件测试操作1

then

命令序列1

elif 条件测试操作2

then

命令序列2

else

命令序列3

fi



例:编写一个成绩分档脚本;



[[email protected] script]# cat gradediv.sh

#!/bin/bash

read -p "请输入你的成绩[0-100]:" GRADE

if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ];then

echo "$GRADE 分!你分数很牛逼"

elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ];then

echo "$GRADE 分!还行吧小伙子"

else

echo "$GRADE 分!你是个垃圾"

fi

[[email protected] script]# chmod +x gradediv.sh

[[email protected] script]# ./gradediv.sh

请输入你的成绩[0-100]:100

100 分!你分数很牛逼

[[email protected] script]# ./gradediv.sh

请输入你的成绩[0-100]:78

78 分!还行吧小伙子

[[email protected] script]# ./gradediv.sh

请输入你的成绩[0-100]:50

50 分!你是个垃圾



就到这吧,慢慢积累

时间: 2024-10-12 23:38:20

Shell脚本应用(五)if语句的相关文章

Shell脚本中执行sql语句操作

这篇文章主要介绍了Shell脚本中执行sql语句操作mysql的5种方法,本文讲解了将SQL语句直接嵌入到shell脚本文件中.命令行调用单独的SQL文件.使用管道符调用SQL文件等方法,需要的朋友可以参考下 对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的结果美化,需要进一步完善和调整.以下为具体的示例及其方法. 1.将SQL语句直接嵌入到sh

shell脚本循环执行mysql语句

参考资料:Shell脚本中执行mysql语句 需求:数据库里有张数据表存储的是用户对电影的评价(user_id movie_id rating time),但是我现在要每部电影的总评分. 解决方法: 1).写个sql文件test.sql:use movie_recommendation;select distinct movie_id from T_user_movie_rating_map; 2).在终端输入mysql -uroot -p123456 -e < test.sql > movi

Shell脚本中执行mysql语句

对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的结果美化,需要进一步完善和调整.以下为具体的示例及其方法. 1.将SQL语句直接嵌入到shell脚本文件中 --演示环境 [[email protected] ~]# more /etc/issue CentOS release 5.9 (Final) Kernel \r on an \m   [e

shell脚本解析5----循环语句

一.for循环 for var in [ list ] do #code block done $var是循环控制变量,[list]是var需要遍历的一个集合,do/done对包含了循环体.如果do和for被写在同一行,必须在do前面加上“;”,如:for $var in [list]; do 例如: #!/bin/bash for day in Sun Mon Tue Wed Thu Fri Sat do echo $day done 执行结果: 如果列表被包含在一对括号中,则被认为是一个元素

shell脚本解析4----分支语句(if)

一.条件语句 1. if [expression] then #code block fi 2. if [expression] then #code block else #code block fi 3. if [expression] then #code block else if [expression]    #该处可以替换成elif [expression] then #code block else #code block fi fi 二.条件语句中常用的比较 比较操作    

shell脚本中执行mysql语句的方法

方法一:使用文件标签EOF重定向的方法的: #!/bin/bash  user=root  pass=123456  db=mysql  tablename=user  mysql -s --line-numbers -f -u$user -p$pass -D $db --delimiter=";" -E<  --SELECT host,user from $tablename order by 1;  SELECT host,user from $tablename order

Linux Shell脚本 几种循环语句创建用户的方法

大家好,我是孤云暮雨,今天给大家带来的是"Linux Shell脚本 几种循环语句创建用户的方法" 添加user1-user20用户 for循环: #!/bin/bash for i in {1..20} do useradd user$i echo "user$i Users to add success" done for循环(C风格): #!/bin/bash for ((i=1;i<=20;i++)) do useradd user$i &&a

Shell脚本之if条件语句

条件测试 test命令:测试特定的表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值. 格式一:test 条件表达式格式二:[ 条件表达式 ] (注意中括号与表达式间有空格) 文件测试: 格式:[ 操作符 文件或目录 ] (注意中括号与表达式间有空格) 常用的测试操作符: -d:测试是否为目录(Directory) -e:测试目录或文件是否存在(Exist) -f:测试是否为文件(File) -r:测试当前用户是否有权限读取(Read) -w:测试当前用户是否有权限写入(Writ

在shell脚本中调用sql语句

查询员工信息 -S:静默登录 [[email protected] shells]$ cat shell1.sh #!/bin/bash #查询员工信息 sqlplus -S /nolog <<EOF conn scott/scott set feedback off set linesize 300 set pagesize 100 col empno for 99999 col ename for a12 col mgr for 9999 col hiredate for a20 col

shell脚本编程之循环语句

在运行脚本时重复执行一系列的命令是很常见的,这时我们就需要使用循环语句来达到这个目的. 一.for命令 格式:for 变量 in 列表:do 循环体 done for命令会遍历列表中的每一个值,并且在遍历完成后退出循环. 列表形式有以下几种: 1.在命令中定义的一系列的值: 2.变量: 3.命令: 4.目录: 5.文件. 实例1: 上例中使用{初始值..结束值}格式来表示一个区间的数值. 实例2:以变量作为列表: 实例3:用命令生成列表: 上例中使用seq命令来生成列表,seq命令的格式为:se