1.介绍
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive),Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。
2.基础知识
2.1脚本以 #!/bin/bash 开头:告诉解释器以bash来解析脚本;
1.编写mybash.sh文件:
#!/bin/bash
echo "This my first shell script"
2.修改权限
chmod +x myshell.sh
3.执行
./mybash.sh
2.2shell变量
2.2.1
2.2.2特殊的环境
2.3位置参数
2.4用户自定义变量
2.5shell中的特殊字符
2.5.1通配符
2.5.2引号
2.5.3顺序执行
2.5.4shell中的注释符号,反斜杠,后台运行
3.shell中的输入输出命令
3.1shell中的标准输入输出文件
3.2输入输出命令
3.2.1输入命令read
3.2.2输出命令echo
4.shell程序的程序控制语句
脚本的控制结构语句有三种基本的类型:
两路分支、多路分支以及一个或多个命令的循环执行。
Linux的bash中的两路分支语句是if语句,
多路分支语句是if-elif和case语句;
代码的循环执行语句是for、while和until语句。
4.1两路分支
格式为:
if
判断条件1
then命令1
1 elif 判断条件2
1 then 命令2
......
else 命令n
Fi
其中elif是else if的缩写
4.2测试语句
4.3case 语句
4.4for语句
格式:
for variable [in argument-list]
do
command-list
Done
其中的[in argumentlist]部分为可选项,由于它的不同又可有三种形式。
[in argumentlist]部分三种形式
[argument-list]为变量值 表
变量variable依次取值表中各字符串
[argument-list]为文 件的表达式
变量的值依次取当前目录(或指定目录)下与文件表达
式相匹配的文件名,每取值一一次,就进入循环体执行命
令表,直到所有匹配的文件 名取完为止。
[argument-list]为空
[argument-list]也可以用$*来代替,变量依次取位置
参数的值,然后执行循环体中的命令表,直至所有位置
参数取完为止。
4.5while语句
while expression
do
command-list
I Done
作用:只要expression的值为真,则进入
循环体,执行command- list中的命令,然
后再做条件测试,直到测试条件为假时才终
止while语句的行
4.6until语句
unt expression
do
command-list
done
作用:只要expression的值为假, 就执行
command- lists的命令。
4.7break和continue语句
break命令可以从循环体中退出来。格式为:
break [n]
continue命令跳过循环体中在它之后的语
句,回到本层循环的开头,进行下-次循环。
格式为:
continue [n]
4.8算数表达式
5.自定义函数
Function( )
{
command-list
}
6.实例
6.1编写shell脚本,可以用键盘输入一个学生成绩(百分制),并转换为对应的成绩标准显示,如:优(90-100);良(80-89);中(70-79);及格(60-69);不及格(0-59)。
6.2请批量创建一个班的用户,建立组名如class0605,然后添加属于这个组的用户。用户名为:学号+姓名。每成功创建一个用户,在屏幕上显示用户名。
6.3. 编写一个Shell脚本,利用for循环把当前目录下所有*.c文件复制到指定的目录中,并显示复制后该目录内按文件大小排序的目录文件清单。
6.4. 编写一个Shell脚本,它把第二个位置参数及其以后的各个位置参数指定的文件复制到第一个位置参数指定的目录中。
6.5. 编写一个Shell脚本,根据键盘可以循环输入学生成绩(百分制),并显示对应的成绩标准(及格和不及格),按Q键退出,按其他键提示重新输入。