什么是shell脚本?
提前写好可执行语句,能够完成特定任务的文件
顺序,批量化处理
解释型程序
常见的脚本Bash Shell
Python/Perl/Ruby
JSP/PHP/ASP/CGI
JavaScript
创建shell脚本的三个步骤
1.新建文本文件
2.添加可以执行的脚本语句(命令行)
3.添加x执行权限
脚本的构成与执行
#!脚本声明(使用哪种解释器)
#注释信息(步骤,思路,用途。变量含义等)
可执行的语句
执行的脚本方式
方法一:作为“命令字”
-指定脚本文件的路径,前提是有x权限
方法二:作为“参数”
sh 脚本文件路径
sh /root/first.sh
source 脚本文件路径
.脚本文件路径
./root/first.sh
调试shell脚本
直接观察执行中的输出,报错
通过sh -X 开启调试模式
在可能出错的地方设置echo
提高脚本对任务需求,运行环境变化的适应能力
方便在脚本中重复使用
相关注意事项
1/若指定的变量名已存在,相当于为此变量重新赋值
2.等号两边不要有空格
3.变量名由字母/数字/下划线组成,区分大小写
4.变量名不能以数字开头,不要使用关键字和特殊字符
x=12
引用变量值:$变量名
查看变量值: echo $变量名,echo ${变量名}
取消变量:
变量的失效
退出定义变量的Shell环境,变量自动失效
手动取消 unset 变量名
变量类型的分类角度
存储类型
整数型,浮点型,双精度浮点型,字符型
shell脚本语言对储存类型要求较松散
使用类型
环境变量 变量名通常大写,由系统维护,用来设置环境,只有个别变量用户可以直接更改
位置变量 bash内置,存储执行脚本时提供的参数
预定义变量 bash内置,一类有特殊用途的变量,可直接调用。但不能直接赋值或修改
自定义变量 由用户自主设置,修好以及使用
环境变量
配置文件 /etc/profile ~/.bash_profile
相关操作 env 列出所有的环境变量
set 列出所有变量
常见的环境变量
PWD PATH USER LOGNAME UID SHELL HOME PS1 PS2
预定义变量
用来保存脚本程序的执行信息
直接使用这些变量
不能直接为这些变量赋值
$0 当前所在的进程或脚本名
$$当前运行进程的PID号
$?命令执行后的返回状态,0标示正常,1或其他值表示异常
$# 已加载的位置变量的个数
$* 所有位置变量的值
位置变量
在执行脚本时提供的命令行参数
表示为$n ,n为序号
$1 ,$2,....${10},${11},....
#!/bin/bash
echo $1 ${10} 查看第1,10个位置参数
扩展赋值操作
区分三种定界符
双引号“ ”:容许扩展,以$引用其他变量
单引号 ‘’ :禁用扩展,即便$也视为普通字符
反撇号 ``:将命令的执行输出作为变量值
read标准输入取值
read 从键盘读入变量值完成赋值
格式: read 【从键盘读入变量值完成赋值】
格式: read 【-p “提示信息”】 变量名
-p可选,-t可指定超时秒数
终端显示控制
stty -echo :关闭终端输出(无显示)
stty echo :恢复终端输出
变量的作用范围
局部变量
新定义u的变量默认只在当前Shell环境中有效
无法在子Shell环境中使用
全局变量
全局变量在当前Shell及子Shell环境中均有效
使用export可将局部变量声明为全局变量
提前写好可执行语句,能够完成特定任务的文件
顺序,批量化处理
解释型程序
常见的脚本Bash Shell
Python/Perl/Ruby
JSP/PHP/ASP/CGI
JavaScript
创建shell脚本的三个步骤
1.新建文本文件
2.添加可以执行的脚本语句(命令行)
3.添加x执行权限
脚本的构成与执行
#!脚本声明(使用哪种解释器)
#注释信息(步骤,思路,用途。变量含义等)
可执行的语句
执行的脚本方式
方法一:作为“命令字”
-指定脚本文件的路径,前提是有x权限
方法二:作为“参数”
sh 脚本文件路径
sh /root/first.sh
source 脚本文件路径
.脚本文件路径
./root/first.sh
调试shell脚本
直接观察执行中的输出,报错
通过sh -X 开启调试模式
在可能出错的地方设置echo
什么是shell变量?
提高脚本对任务需求,运行环境变化的适应能力
方便在脚本中重复使用
定义/赋值变量
相关注意事项
1/若指定的变量名已存在,相当于为此变量重新赋值
2.等号两边不要有空格
3.变量名由字母/数字/下划线组成,区分大小写
4.变量名不能以数字开头,不要使用关键字和特殊字符
x=12
var1=centos
引用变量值:$变量名
查看变量值: echo $变量名,echo ${变量名}
取消变量:
变量的失效
退出定义变量的Shell环境,变量自动失效
手动取消 unset 变量名
变量类型的分类角度
存储类型
整数型,浮点型,双精度浮点型,字符型
shell脚本语言对储存类型要求较松散
使用类型
环境变量 变量名通常大写,由系统维护,用来设置环境,只有个别变量用户可以直接更改
位置变量 bash内置,存储执行脚本时提供的参数
预定义变量 bash内置,一类有特殊用途的变量,可直接调用。但不能直接赋值或修改
自定义变量 由用户自主设置,修好以及使用
环境变量
配置文件 /etc/profile ~/.bash_profile
相关操作 env 列出所有的环境变量
set 列出所有变量
常见的环境变量
PWD PATH USER LOGNAME UID SHELL HOME PS1 PS2
预定义变量
用来保存脚本程序的执行信息
直接使用这些变量
不能直接为这些变量赋值
$0 当前所在的进程或脚本名
$$当前运行进程的PID号
$?命令执行后的返回状态,0标示正常,1或其他值表示异常
$# 已加载的位置变量的个数
$* 所有位置变量的值
位置变量
在执行脚本时提供的命令行参数
表示为$n ,n为序号
$1 ,$2,....${10},${11},....
#!/bin/bash
echo $1 ${10} 查看第1,10个位置参数
扩展赋值操作
区分三种定界符
双引号“ ”:容许扩展,以$引用其他变量
单引号 ‘’ :禁用扩展,即便$也视为普通字符
反撇号 ``:将命令的执行输出作为变量值
read标准输入取值
read 从键盘读入变量值完成赋值
格式: read 【从键盘读入变量值完成赋值】
格式: read 【-p “提示信息”】 变量名
-p可选,-t可指定超时秒数
终端显示控制
stty -echo :关闭终端输出(无显示)
stty echo :恢复终端输出
变量的作用范围
局部变量
新定义u的变量默认只在当前Shell环境中有效
无法在子Shell环境中使用
全局变量
全局变量在当前Shell及子Shell环境中均有效
使用export可将局部变量声明为全局变量