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 变量名 • 1
自定义变量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@ $? $$ • 1 • 2
特殊变量$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}"
特殊符号变量 $#
语法:$# 含义:获取所有输入参数的个数 • 1 • 2
案例需求:获取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号 • 1
小结
$n 获取第几个输入参数 除了$0外 因为$0是获取当前shell脚本的名字 $# 获取输入参数个数 $* $@ 获取输入参数 $?获取上个shell退出状态码或者函数返回值 $$获取shell环境的进程id