shell的自定义变量
目标
理解自定义变量的分类
能够自定义变量进行增删改查
自定义变量介绍:就是自己定义的变量
自定义变量1—局部变量
介绍:就是定义在一个脚本文件中的变量,只能在这个脚本文件中使用的变量就是绝不变量
定义语法:var _name=value
变量定义规则
1.变量名称可以由字母数字下滑线,但是不能以数字开头
2.等号两侧不能有空格
3.在bash环境中,变量的默认类型都是字符创类型,无法直接进行数值计算
4.变量的值如果有空格必须使用双引号括起来
5.不能使用shell的关键字为变量名称
查询变量值的语法
语法1:直接使用变量名查询 $name
语法2:使用花括号${name}
区别:花括号方式适合拼接字符串
eg: var name=张三
echo $name123 无法使用
echo ${name}123 输出 张三123
删除变量的语法
unset 变量名
自定义变量2—常量
介绍:就是变量设置值之后不可以修改的变量叫常量 也叫只读变量
语法:readonly name=张三
自定义变量3—全局变量
父子shell环境介绍
eg:有两个shell脚本文件a.sh和b.sh,如果a.sh脚本文件中执行了b.sh脚本文件,那么a.sh就是父shell环境,b.sh就是子shell环境
自定义全局变量介绍:就是在当前脚本文件中定义全局变量,这个全局变量可以在当前shell环境与子shell环境中都可以使用.
语法:export name1 name2=value
案例实现步骤
1.创建2个脚本文件demo2.sh和demo3.sh
2.编写demo2.sh
命令1:定义全局变量var4
命令2:执行demo3.sh脚本文件
3.编写demo3.sh脚本文件
输出全局变量var4
4.执行demo2.sh脚本文件
代码如下
touch demo2.sh demo3.sh
vim demo2.sh
#!/bin/bash
export var4=value
sh demo3.sh
vim demo3.sh
#!/bin/bash
echo "输出全局变量var4的值为${var4}"
sh demo3.sh
特殊符号变量
目标
能够说出常用的特殊变量有哪些 $n $# $* s@ $? $$
特殊变量$n
语法:$n
$0是用于获取当前脚本文件名称的
$1-$9代表获取第一输入参数到第九个输入参数,第十个及以上的输入参数获取的格式是${10},否则无法获取
执行脚本文件传入参数语法
sh 脚本文件 输入参数1 输入参数2 ....
案例需求:打印脚本文件名字,第一个输入参数,第二个输入参数
1.创建脚本文件demo4.sh
2.编辑demo4.sh的文件内容
打印当前脚本文件的名字
打印第一个输入参数
打印第二个输入参数
打印第十个输入参数
3.执行脚本文件demo4.sh
touch demo4.sh
vim demo4.sh
#!/bin/bash
echo "当前脚本文件名称:$0"
echo "第一个输入参数$1"
echo "第二个输入参数$2"
echo "第十个输入参数${10}"
特殊符号变量 $#
语法:$#
含义:获取所有输入参数的个数
案例需求:获取demo4.sh中输入参数的个数
vim demo4.sh
echo "输入参数的个数为:$#"
特殊符号变量 $* $@
含义:都是获取所有输入参数,用于以后输出所有参数
区别:
1.不使用双引号括起来,功能一样
$*和$@获取所有输入参数,格式为:$1 $2 ....$n
2.使用双引号括起来
"$*" 获取所有参数拼接为一个字符串,格式为:"$1 $2 ... $n"
"$@" 获取一组参数列表对象,格式为:"$1" "$2"..."$n"
使用循环打印所有输入参数可以看出区别
循环语法: for var in 列表变量
do #循环开始
命令 #循环体
done #循环结束
案例需求:在demo4.sh 脚本文件中循环打印输出所有输入参数,体验∗和*和∗和@区别
特殊符号变量$?
含义:用于获取上一个shell命令的退出状态码,或者是函数的返回值
解释:每个shell命令的执行都会有一个返回值,这个返回值用于说明命令执行是否成功.一般来说返回0代表命令执行成功,非0代表失败
特殊符号变量$$
含义:用于获取当前shell环境的进程id号
小结
$n 获取第几个输入参数 除了$0外 因为$0是获取当前shell脚本的名字
$# 获取输入参数个数
$* $@ 获取输入参数
$?获取上个shell退出状态码或者函数返回值
$$获取shell环境的进程id