简介
概述:
- Linux中的Shell作为用户与操作系统的接口,是用户使用操作系统的接口。Shell既是命令解释器,又是一种编程语言。
- 作为命令解释器,Shell是一个终端窗口,接受用户输入的命令,识别、解释、执行该命令,并向用户返回结果,功能类似Windows系统中的cmd.exe程序。
- 作为编程语言,Shell提供了变量、流程控制结构、引用、函数、数组等功能,可将公共程序、系统工具、用户程序“粘合”在一起,创建Shell脚本,实现更复杂的功能。
- Linux的很多管理任务是通过Shell脚本实现的,如Linux启动过程中通过运行/etc/rc.d目录下的脚本来执行系统配置和建立服务的。Shell还可用于用户工作环境的定制。
- 每个Linux系统发行版本中都包含多种Shell,一般有Bash,Bourne,TC Shell,C Shell和Korn Shell等等。其中Bash吸收和继承了其他Shell的优点,成为当前应用最广泛的Shell,是Linux Shell的事实标准。
学习目标:
- 掌握Shell脚本、变量、表达式、数学运算、字符串处理、输入输出的语法结构
- 掌握使用Shell条件和条件、选择、循环三大控制结构的基本编程方法
- 理解全局变量、局部变量、命令行参数的基本概念与用途
- 掌握文件I/O和I/O重定向的基本编程方法
- 理解Shell函数
2.1 Shell编程基本概念
Shell脚本就是通过很多Linux命令通过Shell控制结构粘合起来构成的文本文件,一个Shell文件可以当作一条Linux命令来执行,以高效的方式完成较为复杂的管理控制功能,Shell脚本又叫Shell程序。
2.1.1 Shell脚本程序结构
- Shell脚本的语句可以包括Linux命令、赋值语句、输入输出语句和流程控制结构
- 举例
#!/bin/bash
list = `ls./temp` #赋值语句, ``表示输出是``里面表达式的值
for f in $list
do
mv ./temp/$f ./temp/$f.txt #变量前加$,表示引用该变量值
done
echo finished!
2.1.2 Shell脚本的创建与执行方法
- 创建shscri脚本
- 创建目录./temp及目录下的一些文件
- 执行脚本并查看是否执行成功
- 给脚本加可执行权限然后执行
- 但对任意为假权文件执行会显示权限不够(我这里脚本执行了两次,所以有两个.txt)
注意:
- shell脚本中不能随便加空格,除了命令中的空格,且命令中的空格只能控一个,否则会报错
- 当./运行时总是提示: (bash: ./hello.sh: bin/bash: 坏的解释器: 没有那个文件或目录),但是当用bash运行时正确,你需要查看一下你的脚本,应该把第一行改成 #!/bin/bash ,少写了一个/
2.1.3 Shell变量与赋值表达式
Shell变量
- 可以用变量存储Shell程序中一些命令产生的数据,供脚本的其他命令使用。用户变量可以是任何不超过20个字母、数字或下划线的文本字符串,用户变量区分大小写。
- Shell变量的使用非常灵活,不必事先定义变量,在给变量赋值时会自动获得定义,Shell变量值的类型都是字符串,可以将任何字符串赋值给变量。
赋值表达式
- 可以由字符串常量、Shell变量引用、Linux命令直接输出拼接而成。
- 为区分字符串常量与变量引用,Shell要求用$来引用变量
- 若被引用的Shell变量名后紧接着字母、数字、下划线等字符,则应将变量名用花括号{}括起来,否则bash无法从正确的命名中提取变量名。
- 为区分赋值表达式中的Linux命令与字符串常量,Linux命令需要用反引号``括起来
- 未经定义的Shell变量也可引用
示例
- 创建exvar.sh脚本
- 给脚本加执行权限并执行
2.1.4 Shell输入输出语句
- Shell用echo命令将包含变量值、字符串常量、命令输出的表达式显示出来
- 用read命令让用户从键盘终端输入信息,存入Shell变量。read命令格式:
read [-s] [-p prompt] variable1 variable2 …
- 上述语法表示用户输入多个字符串,依次存入Shell变量variable1、variable2……&#x