目录
一、Shell脚本的构成
1.脚本解释器
一般第一行会被用来进行脚本申明,表示此脚本是通过什么程序来进行解释执行的。
#!/bin/bash是默认解释器。
2.注释信息
以“#”开头的行为注释行,在脚本运行时不会被执行,一般用来注释脚本的作用,注释等信息。
3.可执行语句
实现脚本功能的语句。
二、Shell脚本的执行
1.指定路径
当文件给予执行权限时,可以通过绝对路径和相对路径的方式执行脚本。
2.指定shell来执行脚本
①sh执行
通过sh + 脚本路径的方式来执行脚本
②source执行
通过source + 脚本路径的方式来执行脚本
PS:通常情况下脚本的执行都是放在脚本环境中运行,但是通过source可以将脚本加载到系统环境中执行。
三、变量类型
1.环境变量
环境变量由系统提前创建,用来设置用户的工作环境。env可以查看当前工作环境下的环境变量
readonly 设置变量为只读变量
2.位置变量
当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数按照从左到右的顺序依次赋值给位置变量。
3.预定义变量
系统内置变量。
$*:把所有参数看成以空格分隔的一个字符串整体。
$@:把各个参数加上双引号分隔,每个参数独立。
$0:表示当前执行的脚本或命令的名称。
$?:表示前一条命令或脚本执行后的返回码。0表示执行成功,其他表示失败。
$#:表示命令或脚本要处理的参数个数。
$RANDOM:输出一个随机数。(取值在0到32767)
4.自定义变量
变量名=变量值 (把变量值赋值给变量名)
变量名:临时存放数据的地方
变量值:临时的可变化的数据
PS:
①定义变量时,变量名不加$符号
②命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
③中间不能有空格,可以使用下划线
④不能使用标点符号
⑤不能使用bash里的关键字
四、引号的作用
1.双引号
允许通过$符号引用其他变量值
2. 单引号
禁止引用其他变量值,特殊含义字符视为普通字符
3. 反撇号
命令替换,提取命令执行后的输出结果作为变量。
反撇号难以在一行命令中实现嵌套命令替换操作,这时可以改用$()来替代反撇号。
五、重定向
1.重定向输入 <
从指定的文件读取数据
2. 重定向输出
① >
将标准输出结果保存到指定文件,覆盖原文件内容。
② >>
将标准输出结果追加保存到指定文件,不覆盖原文件内容,追加写到文件末尾。
3.标准错误输出
① 2>
将错误信息保存到指定文件,覆盖。
② >>
将错误信息追加到指定文件尾部,不覆盖。
4.混合输出
① &>
将标准输出、错误输出保存到同一个指定文件中。
② 2>&1
将标准错误输出重定向到标准输出。(可以简单理解为把错误输出到混合,然后输出到标准)
5.重定向交互式硬件设备
类型 | 设备文件 | 文件描述编号 | 默认设备 |
标准输入 | /dev/stdin | 0 | 键盘 |
标准输出 | /dev/stdout | 1 | 显示器 |
标准错误输出 | /dev/stderr | 2 | 显示器 |
六、简单脚本
1.输入圆半径,求面积