一、Shell基础
1、Shell脚本语言是解释型语言
2、Shell脚本的本质:Shell命令的有序集合
3、作用:简短的表达复杂的操作,操作的对象一般是文件和目录,可以减轻工程管理人员的工作量
4、基本过程
①建立shell文件
②赋予shell文件执行权限
③执行shell文件
二、Shell变量及环境变量
1、shell允许用户建立变量存储数据,但不支持数据类型,将任何赋给变量的值都解释成一串字符
2、shell有如下四种变量:①用户自定义变量②位置变量(命令行参数)③预定义变量④环境变量
用户自定义变量:
①首字符必须为字母或下划线
②中间不能有空格,可以使用下划线
③不能使用其他标点符号
④通常使用全大写变量,方便识别
变量的调用:在变量前加$
Linux Shell / bash从右向左赋值
使用unset命令删除变量的赋值
位置变量
$0 与键入的命令行一样,包含脚本文件名
$1,$2,…$9 分别包含第一个到第九个命令行参数
$# 包含命令行参数的个数(不包含脚本文件名)
$@ 包含所有命令行参数
$? 包含前一个命令的退出状态(正常退出为0,反之为非0)
$* 包含所有命令行参数
$$ 包含正在执行进程的ID号
环境变量
PATH:shell搜索路径
export :设置新的环境变量(只在当前终端有效)
env:查看所有环境变量
双引号:如果字符串,字符串原样输出,如果$变量,就输出变量值
单引号:无论什么都原样输出
命令置换符:·输出命令·
三、Shell测试语句
shell程序与语句
①说明性语句
②功能性语句
③结构性语句
功能性语句
1、read:标准输入读入一行,并赋值给后面的变量,相当于scanf
读入第一个 赋给1 第二个给2 剩下给最后
如果执行read语句时标准输入无数据,则程序在此停留等候,直到数据来或被终止运行
read -p :表示输入的时候打印提示语句
2、expr 算数运算命令
主要用于进行简单的整数运算
3、test:可测试三种对象:字符串 整数 文件属性
字符串测试
s1=s2 测试两个字符串的内容是否完全一样
变量双引号可以不要
s1!=s2 测试两个字符串的内容是否有差异
-z s1 测试s1字符串长度是否为0
-n s1 :测试s1字符串长度是否不为0(无图)
另一种方式去写
整数测试
a -eq b : 测试a,b是否相等
a -ne b : 测试a,b是否不相等
a -gt b : 测试a是否大于b
a -ge b :测试a是否大于等于b
a -lt b 测试a是否小于b
a -le b 测试a是否小于等于b
文件测试
四、Shell控制语句
阶梯形式
嵌套形式
方式一:
function_name()
{
command1
.......
commandn
}
方式二:
function function_name()
{
command1
.......
commandn
}
以方式1调用,函数体内变量只能在函数体内使用。 value为函数的执行结果,即为echo的结果
以方式2调用,函数体内变量的作用域从定义到程序结束。$?获取的是函数的返回状态,如果有return则为return的返回值;如果没有return则为0或者1
声明局部变量的格式:
local variable_name = value
1、Shell脚本语言是解释型语言
2、Shell脚本的本质:Shell命令的有序集合
3、作用:简短的表达复杂的操作,操作的对象一般是文件和目录,可以减轻工程管理人员的工作量
4、基本过程
①建立shell文件
②赋予shell文件执行权限
③执行shell文件
二、Shell变量及环境变量
1、shell允许用户建立变量存储数据,但不支持数据类型,将任何赋给变量的值都解释成一串字符
2、shell有如下四种变量:①用户自定义变量②位置变量(命令行参数)③预定义变量④环境变量
用户自定义变量:
①首字符必须为字母或下划线
②中间不能有空格,可以使用下划线
③不能使用其他标点符号
④通常使用全大写变量,方便识别
变量的调用:在变量前加$
Linux Shell / bash从右向左赋值
使用unset命令删除变量的赋值
位置变量
$0 与键入的命令行一样,包含脚本文件名
$1,$2,…$9 分别包含第一个到第九个命令行参数
$# 包含命令行参数的个数(不包含脚本文件名)
$@ 包含所有命令行参数
$? 包含前一个命令的退出状态(正常退出为0,反之为非0)
$* 包含所有命令行参数
$$ 包含正在执行进程的ID号
环境变量
PATH:shell搜索路径
export :设置新的环境变量(只在当前终端有效)
env:查看所有环境变量
双引号:如果字符串,字符串原样输出,如果$变量,就输出变量值
单引号:无论什么都原样输出
命令置换符:·输出命令·
三、Shell测试语句
shell程序与语句
①说明性语句
②功能性语句
③结构性语句
功能性语句
1、read:标准输入读入一行,并赋值给后面的变量,相当于scanf
读入第一个 赋给1 第二个给2 剩下给最后
如果执行read语句时标准输入无数据,则程序在此停留等候,直到数据来或被终止运行
read -p :表示输入的时候打印提示语句
2、expr 算数运算命令
主要用于进行简单的整数运算
3、test:可测试三种对象:字符串 整数 文件属性
字符串测试
s1=s2 测试两个字符串的内容是否完全一样
变量双引号可以不要
s1!=s2 测试两个字符串的内容是否有差异
-z s1 测试s1字符串长度是否为0
-n s1 :测试s1字符串长度是否不为0(无图)
另一种方式去写
整数测试
a -eq b : 测试a,b是否相等
a -ne b : 测试a,b是否不相等
a -gt b : 测试a是否大于b
a -ge b :测试a是否大于等于b
a -lt b 测试a是否小于b
a -le b 测试a是否小于等于b
文件测试
四、Shell控制语句
阶梯形式
嵌套形式
多路分支语句
方式一:
function_name()
{
command1
.......
commandn
}
方式二:
function function_name()
{
command1
.......
commandn
}
以方式1调用,函数体内变量只能在函数体内使用。 value为函数的执行结果,即为echo的结果
以方式2调用,函数体内变量的作用域从定义到程序结束。$?获取的是函数的返回状态,如果有return则为return的返回值;如果没有return则为0或者1
声明局部变量的格式:
local variable_name = value