Shell编程过程中的使用规范与变量
一、shell脚本概述
shell脚本的概念:
将要执行的命令按顺序保存到一个文本文件
给该文件可执行权限
可结合各自shell控制语句以完成更复杂的操作
shell脚本应用场景
重复性操作
交互性任务
批量事务处理
脚本运行状态监测
定时任务执行
简单来说,将平时使用的各种linux命令按顺序保存到一个文本文件,添加可执行权限,从而完成更复杂的操作,
就是shell脚本。
shell的作用:命令解释器,“翻译官”
介于系统内核与用户之间,负责解释命令行
用户的登录shell
默认使用的shell程序,一般为/bin/bash
二、编写一个shell脚本
编写脚本代码:
使用vim文本编辑器(vim能检查语法结构,编写是否存在问题)
每一条linux命令,按执行顺序编写
赋予可执行权限:使脚本具有可执行属性
chmod +x [文件名]
执行方法
方法一:sh 脚本文件路径 (不需要执行权限)
方法二:./脚本文件路径 (需要执行权限来操作)
方法三:source 脚本文件路径 (也不需要执行权限)
实验案例
更完善的脚本构成包括
脚本声明 #!/bin/bash
注释信息 # 注释信息
可执行语句
三、重定向
标准输入(STDIN):默认的设备是键盘,文件编号为0,命令将从标准输入文件中读取在执行过程需要的输入数据。
标准输出(STDOUT):默认的设备是显示器,文件编号为1,命令将执行后的输出结果发送到标准输出文件。
标准错误(STDERR):默认设备是显示器,文件编号为2,命令将执行期间的各种错误信息发送到标准错误文件。
标准输入、标准输出和标准错误默认使用键盘和显示器作为关联的设备,与操作系统进行交互,完成最基本的输入、输出操作,
即从键盘接收用户输入的各种命令字串、辅助控制信息,并将命令结果输出到屏幕上;如果命令执行出错,也会将错误信息反馈到屏幕上。
在实际的Linux系统维护中,可以改变输入、输出内容的方向,而不适用默认的标准输入、输出设备(键盘和显示器),这种操作称为重定向。
重定向操作
重定向输入例子:
vi pass.txt
useradd lisi
passwd --stdin lisi < pass.txt #更改用户lisi的密码
管道操作符号 “|”
将左侧的命令输出结果,作为右侧命令的处理对象。
四、自定义变量
当变量名称后面紧跟其他字符相混淆时,需添加“{ }”将其括起来。
echo ${product}2.5
变量赋值的特殊操作:
设置变量的作用范围
默认情况下,新定义的变量只在当前的shell环境中有效,因此成为局部变量。当进入子程序或新的子shell环境时,
局部变量将无法再使用。为了使用户定义的变量在所有子shell环境中能够继续,可以通过export将指定变量导出为全局变量。
数值变量的计算
expr 变量1 运算符 变量2 [运算符 变量3] ...
关于嵌套exp的语法:
T=`expr $( expr $X + $Y ) \ $X `
特殊的shell变量
1.环境变量
由系统提前创建,用来设置用户的工作环境
配置文件:/etc/profile 、~/.bash_profile
常见的环境变量:
PWD、PATH
USER、SHELL、HOME
2、只读变量
Shell变量中一种特殊情况,一经设定,其值是不可改变的,这种变量被称为只读变量。
注:只读变量的改变是不可逆的,一经只读,无法挽回。
3、位置变量(也称为位置参数,使用$1,$2,$3...$9表示)
当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数安装从左
到右的书序依次赋值给位置变量。
4、预定义变量
$#:表示命令行中位置参数的个数
$*:表示所有位置参数的内容
$?:表示前一条命令执行后的返回状态,为0即正确,任何非0即出现异常
$0:表示当前执行的脚本或程序的名称