目录
- 特殊变量:`$n`
- 案例需求
- 特殊变量:`$#`
- 案例需求
- 特殊变量:`$*`、`$@`
- 案例需求
- 特殊变量:$?
- 特殊变量:$$
特殊变量:$n
语法
$n
含义:
用于接收脚本文件执行时传入的参数
$0 用于获取当前脚本文件名称的
$1~$9, 代表获取第一输入参数到第9个输入参数
第10个以上的输入参数获取参数的格式: ${数字}, 否则无法获取
执行脚本文件传入参数语法
sh 脚本文件 输入参数1 输入参数2 …
下面我们来具体实现一个案例来加深印象
案例需求
创建脚本文件demo4.sh文件, 并在脚本文件内部执行打印脚本文件名字, 第一个输入参数, 第二个输入参数
实现步骤
- 创建脚本文件demo4.sh
- 编辑demo4.sh的文件内容
命令1: 打印当前脚本文件名字
命令2: 打印第1个输入参数
命令3: 打印第2个输入参数
命令4: 打印第10个输入参数- 执行脚本文件demo4.sh
特殊变量:$#
语法
$#
含义
获取所有输入参数的个数
案例需求
在demo4.sh中输出输入参数个数
特殊变量:$*
、$@
语法
$*
$@
# 含义都是获取所有输入参数, 用于以后输出所有参数
$*
与$@
区别
1.不使用双引号括起来, 功能一样
$*和$@获取所有输入参数,格式为: $1 $2 ... $n
2.使用双引号括起来
"$*"获取的所有参数拼接为一个字符串, 格式为: "$1 $2 ... $n"
"$@"获取一组参数列表对象, 格式为: "$1" "$2" ... "$n"
使用循环打印所有输入参数可以看出区别
现在再来学习一个循环语法便于后面做案例
for var in 列表变量
do # 循环开始
命令 # 循环体
done # 循环结束
案例需求
在demo4.sh中循环打印输出所有输入参数, 体验
$*
与$@
的区别
实现步骤:
编辑demo4.sh脚本文件
增加命令: 实现直接输出所有输入后参数
增加命令: 使用循环打印输出所有输入参数
直接输出所有输入参数, 与循环方式输出所有输入参数(使用双引号包含$*
与$@
)
运行观察区别
特殊变量:$?
语法
$?
含义
用于获取上一个Shell命令的退出状态码, 或者是函数的返回值
每个Shell命令的执行都有一个返回值, 这个返回值用于说明命令执行是否成功
一般来说, 返回0代表命令执行成功, 非0代表执行失败
演示(失败):
演示(成功)
特殊变量:$$
语法
$$
含义
用于获取当前Shell环境的进程ID号
演示
查看当前Shell环境进程编号
ps -aux|grep bash