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
相关推荐
脚本中可以使用各种控制结构,比如if语句、for循环、while循环和case语句等。这些控制结构能够根据不同的条件执行不同的命令序列。函数的使用则可以让脚本更加模块化,有利于代码的重用和维护。 在脚本编写的过程中...
《高级Bash脚本编程指南》是一本深入探讨Bash编程的资源,提供了丰富的示例和详尽的解释。以下是根据提供的压缩包文件名所涉及的一些核心知识点: 1. **数组操作**: - `array-append.bash`:Bash从4.0版本开始...
《高级Bash编程指南》是一本专为熟练和有经验的Linux或Unix用户设计的书籍,旨在深入探讨Bash shell的高级用法和编程技巧。Bash,全称Bourne-Again SHell,是GNU项目的一个核心组件,广泛应用于各种Linux发行版和类...
Bash提供了各种条件测试运算符,如-eq(等于)、-ne(不等于)、-gt(大于)、-lt(小于)等,用于在if-else或case语句中进行逻辑判断。 **6. 脚本权限与执行** 脚本的首行应设置为`#!/bin/bash`,告知系统使用Bash...
- **分支结构**:理解`if`、`case`语句和`select`结构,用于根据条件执行不同代码块。 - **函数**:定义和调用Bash函数,提高代码复用性和组织性。 3. **输入/输出重定向** - **文件描述符**:了解0(标准输入)...
条件语句如if、else、case等,用于根据不同的条件执行相应的代码块;循环结构如for、while,允许脚本重复执行某段代码直到满足特定条件。 接下来,函数、数组和流程控制是Bash脚本中的进阶概念。函数可以封装代码,...
2. **条件测试与流程控制**:包括if语句、case语句、while和until循环,以及for循环。这些结构用于根据特定条件执行代码块。 3. **函数**:定义和调用函数可以将重复的任务封装起来,提高代码的可读性和复用性。 4...
在开始高级编程之前,我们需要了解Bash的基本元素,如变量、条件语句、循环结构和函数。变量在Bash中用于存储数据,例如路径、文件名或计算结果。条件语句(if-then-else)允许我们根据不同的条件执行不同的操作,而...
2. **控制结构**:Bash提供了多种流程控制语句,如if...else、for、while和until循环,以及case语句。这些结构用于根据不同的条件执行不同的代码块,实现逻辑判断和迭代。 3. **函数**:Bash脚本支持自定义函数,将...
通过学习和实践这些Bash编程知识点,你可以高效地管理文件、自动化任务、编写复杂的脚本,进一步提升在Linux环境中的工作效率。`美河学习在线eimhe.com_Bash编程.doc`文件很可能是关于这些主题的详细教程,建议仔细...
3. **控制结构**:包括条件语句(if...then...else...fi)和循环语句(for,while,until)。例如,检查文件是否存在: ```bash if [ -f "myfile.txt" ]; then echo "File exists." else echo "File not found....
Bash支持多种流程控制结构,包括`if-then-else`语句、`case`语句、`for`循环、`while`循环和`until`循环。这些结构使你能够根据不同的条件执行不同的代码块。 4. **数组** 虽然Bash对数组的支持较为有限,但依然...
- 流程控制:if语句、case语句、for循环、while循环和until循环。 3. **函数** - 定义和调用Bash函数,理解函数如何与脚本其他部分交互。 - 函数参数:传递参数给函数,以及返回值。 4. **输入/输出重定向** -...
3. **流程控制**:包括`if...then...else...fi`结构、`for`循环、`while`循环以及`case`语句,用于根据不同条件执行不同的代码块。 4. **函数定义**:通过`function`关键字或直接定义函数名后跟花括号创建函数,如`...
4. **流程控制**:学会利用控制结构来编写逻辑复杂的脚本,如逻辑运算符、case语句、break和continue命令。 5. **输入/输出重定向**:理解I/O的概念,学会使用重定向将输出写入文件或从文件读取输入,以及管道(|)...
以上就是Bash编程中关于if、if...else、if...elif...else、while、until和case循环语句的基本用法和示例。理解并熟练掌握这些语句是编写高效Bash脚本的关键。在实际应用中,可以根据具体需求灵活组合使用这些语句。