bash编程之 If和Case语句

if条件测试语法

单分支:

		if CONDITION; then
			CMD1
			CMD2
			...
		fi
 
		test.sh   
		#!/bin/bash
		shuzhi=$1
		if [ $[$shuzhi%2] -eq 0 ];then
			echo $shuzhi
		fi

 

 

例如:传递一个参数给脚本,而后以此参数为用户名,添加此用户;

		#!/bin/bash
		username=$1
		if ! id $username ;then
			useradd $username
		fi

 

 

 

if可以嵌套:

		if CONDITION1; then
			if CONDITION2; then
				CMD
			fi
		fi

 

 

条件取反:

! CONDITION

 

双分支:

		if CONDITION-TRUE; then
			分支1
		else
			分支2
		fi

 

 

练习2:写一个脚本

(1) 传递两个整数给脚本;

(2) 返回其较大者;

		#!/bin/bash
		if [ $1 -gt $2 ];then
			echo $1
		else
			echo $2
		fi

 

 

练习3:写一个脚本

(1) 传递一个参数给脚本,此参数为用户名;

(2) 如果用户存在,则执行如下任务

(a) 如果用户的id号小于500,显示其为管理员或系统用户;

(b) 否则,显示其为普通用户;

(3) 如果用户不存在,则添加之;

		#!/bin/bash
		if id $1 &> /dev/null; then
			 userid=`id -u $1`
			if [ $userid -lt 500 ]; then
				echo "$1 is sysadmin or sysuser."
			else
				echo "$1 is A common user."
			fi
		else
			useradd $1
			if [ $? -eq 0 ];then
				echo "Add user $1."
			else
				echo "Cannot add $1."
			fi
		fi

 

 

多分支的if语句:

		if CONDITION1-TRUE; then
			分支1
		elif CONDITION2-TRUE; then
			分支2
		elif CONDITION3-TRUE; then
			分支3
		...
		else
			分支n
		fi

 

 

练习1:传递一个参数给脚本

如果参数为quit,则显示说要退出脚本;

如果参数为yes,则显示说继续;

否则,则显示为无法识别;

		#!/bin/bash
		if [ $1 == "quit" ];then
			exit 
		elif [ $1 == "yes" ];then
			echo "jixu"
		else
			echo "not find age"
		fi

 

练习2:传递一个用户名参数给脚本

(1) 如果用户的id号为0,则显示为管理员;

(2) 如果用户的id号大于6000,则显示为guest; 

(3) 如果用户的id号大于500,则显示为普通用户;

(4) 如果用户的id号大于0, 则显示为系统用户;

(5) 否则,无法识别;

 

练习3:写一个脚本;

(1) 传递一个磁盘设备文件给脚本;

(2) 判断此设备是否存在;如果存在,则清除此设备上的所有分区;

(3) 否则,则无此设备;

 

 

 

case语句:

简洁版的多分支if语句;

 

语法格式:

		case 变量引用  in 
		PATTERN1)
			分支1
			;;
		PATTERN2)
			分支2
			;;
		...
		*)
			分支n
			;;
		esac

 

 

PATTERN可使用通配符:

*:任意长度的任意字符

?: 任意单个字符

[]:指定范围内的任意单个字符

a|b: a或者b

 

练习1:写一个脚本,使用tar工具把/etc目录备份至/backup目录中,名字为/backup/etc-日期时间.tar.{xz|bz2|gz};

(1) 显示如下菜单

xz) xz compress tool

gzip) gzip compress tool

bzip2) bzip2 compress tool

*) wrong choice and quit

(2) 根据用户选择的工具,执行相应操作;如果用户没有键入任何数据,则默认使用xz;

		#!/bin/bash
		cat<<EOF
				xz)xz compress tool
				gzip)gzip compress tool
				bzip2)bzip2 compress tool
				*)wrong choice and quit
		=======================================================
		EOF
		read -t 5 -p "pls input the choice:" command
		[ -z $command ] && command="xz"
		 ! [  -d /backup ] ||  mkdir /backup
		file_path=/backup/etc"-$(date +%Y%m%d%H%M).tar"
		echo $file_path
		case $command in
			"xz")
					echo "xz"
					#tar -Jcf  $file_path.xz /etc/* 
					;;
			"gzip")
					echo "gzip"
					#tar -zcf  $file_path.gz /etc/*
					;;
			"bzip2")
					echo "bzip2"
					#tar -jcf  $file_path.bzip2 /etc/*
					;;
			*)
					echo "wrong choice"
					;;
		esac

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值