`

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

 

 

分享到:
评论

相关推荐

    高级Bash脚本编程指南 源码

    《高级Bash脚本编程指南》是一本深入探讨Bash编程的资源,提供了丰富的示例和详尽的解释。以下是根据提供的压缩包文件名所涉及的一些核心知识点: 1. **数组操作**: - `array-append.bash`:Bash从4.0版本开始...

    《高级bash编程指南》

    《高级Bash编程指南》是一本专为熟练和有经验的Linux或Unix用户设计的书籍,旨在深入探讨Bash shell的高级用法和编程技巧。Bash,全称Bourne-Again SHell,是GNU项目的一个核心组件,广泛应用于各种Linux发行版和类...

    高级bash编程指南_PDF版.zip

    Bash提供了各种条件测试运算符,如-eq(等于)、-ne(不等于)、-gt(大于)、-lt(小于)等,用于在if-else或case语句中进行逻辑判断。 **6. 脚本权限与执行** 脚本的首行应设置为`#!/bin/bash`,告知系统使用Bash...

    高级bash编程指南中文版

    - **分支结构**:理解`if`、`case`语句和`select`结构,用于根据条件执行不同代码块。 - **函数**:定义和调用Bash函数,提高代码复用性和组织性。 3. **输入/输出重定向** - **文件描述符**:了解0(标准输入)...

    高级Bash脚本编程指南Doc转pdf高清版

    条件语句如if、else、case等,用于根据不同的条件执行相应的代码块;循环结构如for、while,允许脚本重复执行某段代码直到满足特定条件。 接下来,函数、数组和流程控制是Bash脚本中的进阶概念。函数可以封装代码,...

    高级bash编程

    2. **条件测试与流程控制**:包括if语句、case语句、while和until循环,以及for循环。这些结构用于根据特定条件执行代码块。 3. **函数**:定义和调用函数可以将重复的任务封装起来,提高代码的可读性和复用性。 4...

    高级Bash脚本编程指南.pdf

    在开始高级编程之前,我们需要了解Bash的基本元素,如变量、条件语句、循环结构和函数。变量在Bash中用于存储数据,例如路径、文件名或计算结果。条件语句(if-then-else)允许我们根据不同的条件执行不同的操作,而...

    高级Bash脚本编程指南(Advanced Bash-Scripting Guide)中英文版本

    2. **控制结构**:Bash提供了多种流程控制语句,如if...else、for、while和until循环,以及case语句。这些结构用于根据不同的条件执行不同的代码块,实现逻辑判断和迭代。 3. **函数**:Bash脚本支持自定义函数,将...

    Linux Bash编程

    通过学习和实践这些Bash编程知识点,你可以高效地管理文件、自动化任务、编写复杂的脚本,进一步提升在Linux环境中的工作效率。`美河学习在线eimhe.com_Bash编程.doc`文件很可能是关于这些主题的详细教程,建议仔细...

    高级Bash脚本编程指南

    3. **控制结构**:包括条件语句(if...then...else...fi)和循环语句(for,while,until)。例如,检查文件是否存在: ```bash if [ -f "myfile.txt" ]; then echo "File exists." else echo "File not found....

    bash编程指南-中级

    Bash支持多种流程控制结构,包括`if-then-else`语句、`case`语句、`for`循环、`while`循环和`until`循环。这些结构使你能够根据不同的条件执行不同的代码块。 4. **数组** 虽然Bash对数组的支持较为有限,但依然...

    Linux Bash脚本编程大全

    - 流程控制:if语句、case语句、for循环、while循环和until循环。 3. **函数** - 定义和调用Bash函数,理解函数如何与脚本其他部分交互。 - 函数参数:传递参数给函数,以及返回值。 4. **输入/输出重定向** -...

    高级Bash编程-by Mendel Cooper

    3. **流程控制**:包括`if...then...else...fi`结构、`for`循环、`while`循环以及`case`语句,用于根据不同条件执行不同的代码块。 4. **函数定义**:通过`function`关键字或直接定义函数名后跟花括号创建函数,如`...

    鸟哥的BASH Shell编程手册

    4. **流程控制**:学会利用控制结构来编写逻辑复杂的脚本,如逻辑运算符、case语句、break和continue命令。 5. **输入/输出重定向**:理解I/O的概念,学会使用重定向将输出写入文件或从文件读取输入,以及管道(|)...

Global site tag (gtag.js) - Google Analytics