《 Linux操作系统》第六讲 Shel编程 学时计划:4学时理论,4学时实验 (实验五:Shel1编程) 教学大纲: 1、She1l基础 2、 Shell语法 3、 Shell编程案例一:用户管理 4、 Shell编程案例二:备份 MySQL数据库 5、讨论与思考 She11是用户和 Linux操作系统之间的接口。 Linux中有多种 he11,其中缺省使用的是Bash 本讲讲述 Shell的工作原理、She1l的种类、 Shell的一般操作 及Bash的特性。最后通过两个案例介绍Shel1的应用方法和Shel1 编程的一般思路。 本讲仅简单介绍Shel的基础知识,对于更多的She11内容,本 讲最后推荐了一些相关的专业教程和技术书籍。 、 Shell基础 1.1She1l介绍 Linux系统的She11作为操作系统的外壳,为用户提供使用操作 系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。 She1l是用户和 Linux内核之间的接口程序,如果把 Linux内核 想象成一个球体的中心,shel1就是围绕内核的外层。当从she1l或 其他程序向 Linux传递命令时,内核会做出相应的反应 1.1.1She1l是一个命令语言解释器。 Shell拥有自己内建的 Shell命令集,Shel1也能被系统中其他 应用程序所调用。用户在提示符下输入的命令都由She11先解释然后 传给 Linux核心。有一些命令,比如改变工作目录命令cd,是包含 1|(anx操作系统》讲稿/河南中医学院/阮晓龙/ phactcm.edu.cn
1 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn 《Linux 操作系统》第六讲: Shell 编程 学时计划:4 学时 理论,4 学时 实验 (实验五:Shell 编程) 教学大纲: 1、Shell 基础 2、Shell 语法 3、Shell 编程案例一:用户管理 4、Shell 编程案例二:备份 MySQL 数据库 5、讨论与思考 Shell 是用户和 Linux 操作系统之间的接口。Linux 中有多种 shell,其中缺省使用的是 Bash。 本讲讲述 Shell 的工作原理、Shell 的种类、Shell 的一般操作 及 Bash 的特性。最后通过两个案例介绍 Shell 的应用方法和 Shell 编程的一般思路。 本讲仅简单介绍 Shell 的基础知识,对于更多的 Shell 内容,本 讲最后推荐了一些相关的专业教程和技术书籍。 一、Shell 基础 1.1Shell 介绍 Linux 系统的 Shell 作为操作系统的外壳,为用户提供使用操作 系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。 Shell 是用户和 Linux 内核之间的接口程序,如果把 Linux 内核 想象成一个球体的中心,shell 就是围绕内核的外层。当从 shell 或 其他程序向 Linux 传递命令时,内核会做出相应的反应。 1.1.1Shell 是一个命令语言解释器。 Shell 拥有自己内建的 Shell 命令集,Shell 也能被系统中其他 应用程序所调用。用户在提示符下输入的命令都由 Shell 先解释然后 传给 Linux 核心。有一些命令,比如改变工作目录命令 cd,是包含
在shel1内部的。还有一些命令,例如拷贝命令cp和移动命令rm, 是存在于文件系统中某个目录下的单独的程序。对用户而言,不必关 心一个命令是建立在Shel1内部还是一个单独的程序。 Shell运行时,首先检查命令是否是内部命令,若不是再检查是 否是一个应用程序(这里的应用程序可以是 Linux本身的实用程序, 如1s和rm,也可以是购买的商业程序,如xv,或者是自由软件,如 emacs)。然后 Shell在搜索路径里寻找应用程序(搜索路径就是一个 能找到可执行程序的目录列表)。如果键入的命令不是一个内部命令 并且在路径里没有找到这个可执行文件,将会显示一条错误信息。如 果能够成功找到命令,该内部命令或应用程序将被分解为系统调用并 传给 Linux内核。 1.1.2She1l自身就是一个解释型的程序设计语言。 She1l程序设计语言支持绝大多数在高级语言中能见到的程序元 素,如函数、变量、数组和程序控制结构。 Shell编程语言简单易学 任何在提示符中能键入的命令都能放到一个可执行的Shel程序中。 1.1.3Shel1的工作原理 当普通用户成功登录,系统将执行一个称为She11的程序。正是 Shell进程提供了命令行提示符。作为默认值,对普通用户用“$” 作提示符,对超级用户(root)用“#”作提示符。一旦出现了shel1 提示符,就可以键入命令名称及命令所需要的参数。Shel1将执行这 些命令。如果一条命令花费了很长的时间来运行,或者在屏幕上产生 了大量的输出,可以从键盘上按ctrl+c发出中断信号来中断它(在 正常结束之前,中止它的执行)。 当用户准备结束登录对话进程时,可以键入1 gout命令、exit 命令或文件结束符(EOF)(按ctr1+d实现),结束Shel1的工作状态。 1.2She1l与 Linux内核的管理 She11、用户与 Linux操作系统内核之间的关系如下图6-1所示。 2|(amx操作系统》讲稿/河南中医学院/阮晓龙/ phactcm.edu.cn
2 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn 在 shell 内部的。还有一些命令,例如拷贝命令 cp 和移动命令 rm, 是存在于文件系统中某个目录下的单独的程序。对用户而言,不必关 心一个命令是建立在 Shell 内部还是一个单独的程序。 Shell 运行时,首先检查命令是否是内部命令,若不是再检查是 否是一个应用程序(这里的应用程序可以是 Linux 本身的实用程序, 如 ls 和 rm,也可以是购买的商业程序,如 xv,或者是自由软件,如 emacs)。然后 Shell 在搜索路径里寻找应用程序(搜索路径就是一个 能找到可执行程序的目录列表)。如果键入的命令不是一个内部命令 并且在路径里没有找到这个可执行文件,将会显示一条错误信息。如 果能够成功找到命令,该内部命令或应用程序将被分解为系统调用并 传给 Linux 内核。 1.1.2Shell 自身就是一个解释型的程序设计语言。 Shell程序设计语言支持绝大多数在高级语言中能见到的程序元 素,如函数、变量、数组和程序控制结构。Shell 编程语言简单易学, 任何在提示符中能键入的命令都能放到一个可执行的 Shell 程序中。 1.1.3Shell 的工作原理 当普通用户成功登录,系统将执行一个称为 Shell 的程序。正是 Shell 进程提供了命令行提示符。作为默认值,对普通用户用“$” 作提示符,对超级用户(root)用“#”作提示符。一旦出现了 shell 提示符,就可以键入命令名称及命令所需要的参数。Shell 将执行这 些命令。如果一条命令花费了很长的时间来运行,或者在屏幕上产生 了大量的输出,可以从键盘上按 ctrl+c 发出中断信号来中断它(在 正常结束之前,中止它的执行)。 当用户准备结束登录对话进程时,可以键入 logout 命令、exit 命令或文件结束符(EOF)(按 ctrl+d 实现),结束 Shell 的工作状态。 1.2Shell 与 Linux 内核的管理 Shell、用户与Linux操作系统内核之间的关系如下图6-1所示
用户 命令 输出 Linux Shell 进程 系统调用 产生进程 LInux操作系统内核 计算机硬件 图6-1She、用户与 Linux操作系统内核的关系 1.3查看Shel1版本 Linux的She11有多种类型,其中最常见的就是 Bourne shel1 (sh)、 C Shell(csh)和 Korn shell(ksh)。 用户登录系统后,可以通过命令查看自己的Shel版本。 命令 shell>echo SSHELL 如果需要临时的更换She11版本的话,可以通过命令变更。 命令: shell>csh shell>echo SSHELL shell>ksh shell>echo SSHELL shell>bash shell>echo SSHELL 1. bAsh Bash是大多数 Ubuntu系统的默认Shel1。Bash的特点主要有下 面几个方面。 (1)可自动补全命令。 (2)可以使用通配符。 (3)可以保存历史命令。 (4)支持命令别名。 3l(anx操作系统》讲稿/河南中医学院/阮晓龙/ phactcm.edu.cn
3 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn 1.3 查看 Shell 版本 Linux 的 Shell 有多种类型,其中最常见的就是 Bourne Shell (sh)、C Shell(csh)和 Korn Shell(ksh)。 用户登录系统后,可以通过命令查看自己的 Shell 版本。 命令: shell>echo $SHELL 如果需要临时的更换 Shell 版本的话,可以通过命令变更。 命令: shell>csh shell>echo $SHELL shell>ksh shell>echo $SHELL shell>bash shell>echo $SHELL 1.4Bash Bash 是大多数 Ubuntu 系统的默认 Shell。Bash 的特点主要有下 面几个方面。 (1)可自动补全命令。 (2)可以使用通配符。 (3)可以保存历史命令。 (4)支持命令别名。 图 6-1 Shell、用户与 Linux 操作系统内核的关系
Bash中可以使用 alias和 unalias命令给命令或者可执行程序 起别名和删除别名。 命令举例: shell>lm #m命令不存在,命令执行出错。通过 alias让lm成为ls1命令的别名。 shell>alias Im='Is -I #执行lm命令,相当于执行ls1命令。 shell>lm (5)支持输入/输出重定向。 输入/输出重定向用于改变命令的输入和输出的默认配置。 Linux 系统默认的输入是键盘,默认的输出是显示器。 命令举例: shell>ls >/home/zhaodongfeng/lsl.out #s命令的结果不通过显示器显示而存放到文件中去。 shell>ls-1>/home/zhaodongfeng/lsl.out #将ls-命令的结果追加到 Isl.out文件中,并覆盖以前的内容。 (6)支持管道功能。 管道用于将一系列的命令连接起来,也就是把前面命令的输出作 为后面命令的输入。管道的命令是“|” shell>grep 211.69.3233/var/log/munin/munin-node log #查看日志中的内容。 shell>grep 211.69.3233/var/log/munin/munin-node. log Iwc-I #查看日志中的内容,其结果作为wc命令的输入,用来进行统计, (7)支持两级提示符。 Bash有两级提示符。第一级提示符是“$”。当Bash需要进一步 提示以便补全命令时,会显示第二级提示符“>”。 1.5She1l脚本的建立和执行 1.5. 1 Shell脚本的建立 She1l程序可以存放到文件中,这种被She1l解释执行的命令文 件被称为Shel1脚本。Shel1脚本程序与 Windows的.bat批处理文件 4|am操作系统》讲稿/河南中医学院/阮晓龙/@phactcm.edu.cn
4 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn Bash 中可以使用 alias 和 unalias 命令给命令或者可执行程序 起别名和删除别名。 命令举例: shell>lm #lm 命令不存在,命令执行出错。通过 alias 让 lm 成为 ls -l 命令的别名。 shell>alias lm=’ls -l’ #执行 lm 命令,相当于执行 ls -l 命令。 shell>lm (5)支持输入/输出重定向。 输入/输出重定向用于改变命令的输入和输出的默认配置。Linux 系统默认的输入是键盘,默认的输出是显示器。 命令举例: shell>ls > /home/zhaodongfeng/ls1.out #ls 命令的结果不通过显示器显示而存放到文件中去。 shell>ls -l > /home/zhaodongfeng/ls1.out #将 ls -l 命令的结果追加到 ls1.out 文件中,并覆盖以前的内容。 (6)支持管道功能。 管道用于将一系列的命令连接起来,也就是把前面命令的输出作 为后面命令的输入。管道的命令是“|”。 shell>grep 211.69.32.33 /var/log/munin/munin-node.log #查看日志中的内容。 shell>grep 211.69.32.33 /var/log/munin/munin-node.log |wc -l #查看日志中的内容,其结果作为 wc 命令的输入,用来进行统计。 (7)支持两级提示符。 Bash 有两级提示符。第一级提示符是“$”。当 Bash 需要进一步 提示以便补全命令时,会显示第二级提示符“>”。 1.5Shell 脚本的建立和执行 1.5.1Shell 脚本的建立 Shell 程序可以存放到文件中,这种被 Shell 解释执行的命令文 件被称为 Shell 脚本。Shell 脚本程序与 Windows 的.bat 批处理文件
非常相似,但功能要比bat文件强大的多。 She11脚本程序可以在存放时不指定扩展名,通常为了便于记忆, 总是习惯用.sh来描述Shel1脚本 1.5.2执行She11脚本的方式 执行Shel1脚本的方式有三种。 (1)输入重定向。 使用输入重定向的方式让 shell从文件中读取命令并执行。 命令: shell>bashbash脚本文件路径与文件名 (3)将Shel1脚本的权限设置为可执行后直接在提示符下执行。 通常情况下,用户是不能够直接执行由文本编辑器(vi或者nano) 建立的She11脚本的,因为建立的She11脚本文件是没有执行权限的。 通过 chmod命令将She1l脚本的权限设置为执行权限后,可以直接执 行She11脚本文件。 命令 shell>chmod+x脚本文件路径与文件名 she/脚本文件路径与文件名 二、 Shell语法 2.1建立一个She11脚本程序 如同其他语言一样,使用任意一种文字编辑器,比如vi、nano 等来编写Shel1程序。 (1)程序必须以下面的行开始(必须放在文件的第一行)。 #!/bin/bash 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在 本例中使用/bin/bash来执行程序。 (2)注释 在进行Shel1编程时,以#开头的句子表示注释,直到这一行的 5《Linux操作系统》讲稿/河南中医学院/阮晓龙/rx@hactcm.edu.cn
5 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn 非常相似,但功能要比 bat 文件强大的多。 Shell脚本程序可以在存放时不指定扩展名,通常为了便于记忆, 总是习惯用.sh 来描述 Shell 脚本。 1.5.2 执行 Shell 脚本的方式 执行 Shell 脚本的方式有三种。 (1)输入重定向。 使用输入重定向的方式让 shell 从文件中读取命令并执行。 命令: shell>bashbash 脚本文件路径与文件名 (3)将 Shell 脚本的权限设置为可执行后直接在提示符下执行。 通常情况下,用户是不能够直接执行由文本编辑器(vi 或者 nano) 建立的Shell脚本的,因为建立的Shell脚本文件是没有执行权限的。 通过 chmod 命令将 Shell 脚本的权限设置为执行权限后,可以直接执 行 Shell 脚本文件。 命令: shell>chmod +x 脚本文件路径与文件名 shell>./脚本文件路径与文件名 二、Shell 语法 2.1 建立一个 Shell 脚本程序 如同其他语言一样,使用任意一种文字编辑器,比如 vi、nano 等来编写 Shell 程序。 (1)程序必须以下面的行开始(必须放在文件的第一行)。 #!/bin/bash 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在 本例中使用/bin/bash 来执行程序。 (2)注释 在进行 Shell 编程时,以#开头的句子表示注释,直到这一行的
结東。建议在程序中使用注释。如果使用注释,那么即使相当长的时 间内没有使用该脚本,也能在很短的时间内明白该脚本的作用及工作 原理。 (3)第一个Shel1脚本程序 在 Linux中使用下述命令创建一个脚本程序。 shell->cd≈ shell>mkdir shel #创建 Shell脚本程序 shell>nano hello sh 在 hello.sh中输入下述内容。 #!/bin/bash #输出字符 echo“ hello world!” 保存后退出。执行下述命令,运行She1l脚本。 #执行She程序 shell>bash hello. sh #赋予 Shell脚本执行的权限。 shell>chmod +x hello. sh #直接执行Shel脚本 shell>/hello. sh 2.2变量 在Shel1编程中,所有的变量都由字符串组成,并且不需要对变 量进行声明 变量名是以字母或下划线大头的字母、数字和下划线序列,并且 大小写字母意义不同。变量名的长度不受限制。 要赋值给一个变量,可以直接写:变量名=值。需要注意的是“=” 两边不能够有空格。取出变量值时可以加一个美元符号($)在变量 前面。 6《Linux操作系统》讲稿/河南中医学院/阮晓龙/rx@hactcm.edu.cn
6 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn 结束。建议在程序中使用注释。如果使用注释,那么即使相当长的时 间内没有使用该脚本,也能在很短的时间内明白该脚本的作用及工作 原理。 (3)第一个 Shell 脚本程序 在 Linux 中使用下述命令创建一个脚本程序。 shell>cd ~ shell>mkdir shell shell>cd shell #创建 Shell 脚本程序。 shell>nano hello.sh 在 hello.sh 中输入下述内容。 #!/bin/bash #输出字符 echo “hello world!” #end 保存后退出。执行下述命令,运行 Shell 脚本。 #执行 Shell 程序。 shell>bash hello.sh #赋予 Shell 脚本执行的权限。 shell>chmod +x hello.sh #直接执行 Shell 脚本。 shell>./hello.sh 2.2 变量 在 Shell 编程中,所有的变量都由字符串组成,并且不需要对变 量进行声明。 变量名是以字母或下划线大头的字母、数字和下划线序列,并且 大小写字母意义不同。变量名的长度不受限制。 要赋值给一个变量,可以直接写:变量名=值。需要注意的是“=” 两边不能够有空格。取出变量值时可以加一个美元符号($)在变量 前面
创建Shel1脚本 printchar.sh,具体内容如下。 #!/bin/sh #对变量赋值 a=hello world #现在打印变量a的内容 echo Sa 2.3算数运算 She1l是一种弱编程语言,算数运算的功能不算是很强大,一搬 使用((a=a+1)这种格式,或者使用leta=a+1形式进行算数运算。 前者的执行效率最高 She11进行算数运算的优先级和C语言的优先级是相同的,在此 不再累述。 命令举例: shell>let a=l shell>let b=3 shell>let c=a+b Sa. b is sb. c is Sc 2.4条件语句:if Shell具有一般高级语言所具有的控制结构,如if语句、case 语句等。 f语句根据表达式的值是真或者假来决定要执行的程序段落 最常用的if语句结构是if…then… elseif…then…else…fi。 命令举例:判断当前的Shel是否是bash #!/bin/bash #判断当前的Shel是否为/ bin/bash if["SHELL"="/bin/bash"] echo"your login shell is bash" echo"your login shell in not SHeLL fi fend 7|(am操作系统》讲稿/河南中医学院/阮晓龙/@phactcm.edu.cn
7 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn 创建 Shell 脚本 printchar.sh,具体内容如下。 #!/bin/sh #对变量赋值: a="hello world" # 现在打印变量 a 的内容: echo "A is:" echo $a 2.3 算数运算 Shell 是一种弱编程语言,算数运算的功能不算是很强大,一搬 使用((a=a+1))这种格式,或者使用 let a=a+1 形式进行算数运算。 前者的执行效率最高。 Shell 进行算数运算的优先级和 C 语言的优先级是相同的,在此 不再累述。 命令举例: shell>let a=1 shell>let b=3 shell>let c=a+b shell>echo “a is $a,b is $b,c is $c.” 2.4 条件语句:if Shell 具有一般高级语言所具有的控制结构,如 if 语句、case 语句等。 if 语句根据表达式的值是真或者假来决定要执行的程序段落。 最常用的 if 语句结构是 if…then…elseif…then…else…fi。 命令举例:判断当前的 Shell 是否是 bash。 #!/bin/bash #判断当前的 Shell 是否为/bin/bash。 if [ "$SHELL" = "/bin/bash" ] then echo "your login shell is bash" else echo "your login shell in not $SHELL" fi #end
命令举例:判断用户输入的答案。 #!/bin/bash #输出提示输入的对话。 echo -n"Please input the answer char: 等待用户数据内容 read Inpu if[ INput=y echo"The answer is right elif[ input =n echo "The answer is wrong echo"The Input is bad f 2.5条件语句:case 如果用户已经规划好几个项目类型,只要选择执行的类型就能够 正确执行,虽然可以使用嵌套的if语句实现,但是case显然更为方 便和容易 命令举例:判断用户的选择。 #!/bin/bash echo"what are your hobbie table tennis) echo " your choose table tennis basketball) echo"your choose basketball echo"your choose football echo"Usage( table tennis basketball football; 8《Linux操作系统》讲稿/河南中医学院/阮晓龙/rx@hatem.edu.cn
8 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn 命令举例:判断用户输入的答案。 #!/bin/bash #输出提示输入的对话。 echo -n "Please input the answer char:" #等待用户数据内容。 read Input if [ $Input = y ] then echo "The answer is right." elif [ $Input = n ] then echo "The answer is wrong." else echo "The Input is bad." fi # end 2.5 条件语句:case 如果用户已经规划好几个项目类型,只要选择执行的类型就能够 正确执行,虽然可以使用嵌套的 if 语句实现,但是 case 显然更为方 便和容易。 命令举例:判断用户的选择。 #!/bin/bash echo "what are your hobbies?" case $1 in 'table tennis') echo "your choose table tennis." ;; basketball) echo "your choose basketball." ;; football) echo "your choose football." ;; *) echo "Usage {'table tennis'|basketball|football}" exit 1 esac #end
可以通过两种方式来执行。 带参数进行执行。 zhaodongfeng @Teach Server: -/shells bash checksports sh football what are your hobbies? your choose football 不带参数进行执行,提示可以输入的参数。 zhaodongfeng@ TeachServer: -/shells bash checksports sh what are your hobbies? Usage table tennis basketball football) 2.6条件语句: select select表达式是一种bash的扩展应用,尤其擅长于交互式使用。 用户可以从一组不同的值中进行选择。 命令举例:选择最喜欢的操作系统 #!/bin/bash echo"What is your favourite OS? select chooseos in"Linux""Windows""Free BSD"""Mac Lion""Other".do done echo"Your choose is Schooseos #end 执行该脚本的结果如下。 zhaodongfeng a Teach Server -/shells bash chooses. sh What is your favourite OS? D)LI 2)Windows 3)FreeBSD 4)Mac Lion 5)Other Your choose is mac Lion 2.7循环语句:for for循环语句是使用叫做的循环语句,在Shel1中有两种方式。 通过两个案例来进行说明。 9|am操作系统》讲稿/河南中医学院/阮晓龙/pemn
9 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn 可以通过两种方式来执行。 #带参数进行执行。 zhaodongfeng@TeachServer:~/shell$ bash checksports.sh football what are your hobbies? your choose football. #不带参数进行执行,提示可以输入的参数。 zhaodongfeng@TeachServer:~/shell$ bash checksports.sh what are your hobbies? Usage {'table tennis'|basketball|football} 2.6 条件语句:select select 表达式是一种 bash 的扩展应用,尤其擅长于交互式使用。 用户可以从一组不同的值中进行选择。 命令举例:选择最喜欢的操作系统。 #!/bin/bash echo "What is your favourite OS?" select chooseos in "Linux" "Windows" "FreeBSD" "Mac Lion" "Other";do break; done echo "Your choose is $chooseos." #end 执行该脚本的结果如下。 zhaodongfeng@TeachServer:~/shell$ bash chooseos.sh What is your favourite OS? 1) Linux 2) Windows 3) FreeBSD 4) Mac Lion 5) Other #? 4 Your choose is Mac Lion. 2.7 循环语句:for for 循环语句是使用叫做的循环语句,在 Shell 中有两种方式。 通过两个案例来进行说明
命令举例:1+2+…+100=? #f !/bin/bash for((F=1;i<=100,=i+1) echo"the count is Ss' fend 命令举例:循环列出数组中的数值。 #f !/bin/bash for 23456 echo Sm 2.8循环语句: while和 until while语句和 until语句的语法结构和用途相似。 while语句会 在测试条件为真时循环执行。 命令 while expression until语句会在测试条件为假时循环执行。 命令 until expression 命令举例:计算1+2+3+4+5的值 #!/bin/bash #n1-len2表示nl不大于n2。 while test Sp-le 5 let s=Ss+Sp let p=Sp+ 10《LInux操作系统》讲稿/河南中医学院/阮晓龙/rl@hactcm.edu.cn
10 《Linux 操作系统》讲稿 / 河南中医学院 / 阮晓龙 / rxl@hactcm.edu.cn 命令举例:1+2+…+100=? # !/bin/bash let s=0 for ((i=1;i<=100;i=i+1)) do s=$(($s+$i)) done echo "the count is $s" #end 命令举例:循环列出数组中的数值。 # !/bin/bash for m in 1 2 3 4 5 6 do echo $m done #end 2.8 循环语句:while 和 until while 语句和 until 语句的语法结构和用途相似。while 语句会 在测试条件为真时循环执行。 命令: while expression do commands done until 语句会在测试条件为假时循环执行。 命令: until expression do commands done 命令举例:计算 1+2+3+4+5 的值。 #!/bin/bash let s=0; p=1 #n1 -le n2 表示 n1 不大于 n2。 while test $p -le 5 do let s=$s+$p let p=$p+1