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< 
   

 

 

你可能感兴趣的:(Linux)