「这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战」
你必须非常努力,才能看起来毫不费力!
微信搜索公众号[ 漫漫Coding路 ],一起From Zero To Hero !
前言
上一篇文章Bash 中的变量类型,你知道几种?,我们一起学习了 Bash 中自定义变量和环境变量的使用,本篇文章来学习后面两种:位置参数变量和预定义变量。
变量分类
我们先来复习下 Bash
中的四种变量类型:
- 自定义变量:类似Java、Go语言中的自定义变量,灵活性最高;
- 环境变量:主要保存和系统环境相关的变量,系统已经定义好了很多环境变量,同时允许用户新增自定义环境变量,灵活性较高;
- 位置参数变量:这种变量主要是用来向脚本中传递参数或者数据用的,参数名不能自定义,变量的作用也是固定的,只能更改值;
- 预定义变量:Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
位置参数变量
这种变量主要是用于执行脚本时,向脚本传递参数:
位置参数变量 | 作用 |
---|---|
$n | n为数字,$0代表命令本身,$1到$9代表第1到9个参数,10以上的参数需要用大括号包含,例如${10} |
$* | 这个变量代表命令中的所有参数,$* 把所有的参数看作一个整体,即一个字符串 |
$@ | 这个变量代表命令中的所有参数,每个参数都看作独立的,可以想象为一个list |
$# | 代表命令行参数个数 |
我们来写个脚本实际体验下,就容易理解了:
1 | shell复制代码[root@VM-0-5-centos ~]# vim test.sh |
在实际使用中,我们很少使用位置参数变量进行逻辑处理,因为用户使用脚本时并不知道脚本需要几个参数,只有编写者才知道。最佳实践,更多的是引导用户输入参数,然后进行处理。
接收键盘输入
1 | shell复制代码# read [选项] [变量名] |
测试接收键盘输入:
1 | shell复制代码[root@VM-0-5-centos ~]# vim read.sh |
预定义变量
预定义变量 | 作用 |
---|---|
$? | 最后一次命令执行命令的返回状态。变量值为0,表示上个变量正确执行;非0表示上个命令执行失败(具体什么非0值由命令自己决定) |
$$ | 当前的进程号 |
$! | 后台运行的最后一个进程的进程号 |
还记得我们之前学习过的 多命令执行 吗,那里的 &&
和 ||
命令,就是使用 $?
来判断上一条命令是否正确执行的。
1 | shell复制代码[root@VM-0-5-centos ~]# echo "hello" |
测试 $$
和 $!
:
1 | shell复制代码[root@VM-0-5-centos ~]# vim process.sh |
总结
本篇文章首先回顾了 Bash 中的变量分类:自定义变量、环境变量、位置参数变量和预定义变量,并详细介绍了后两种:
- 位置参数变量的使用,以及引导用户键盘输入;
- 预定义变量的使用。
更多
个人博客: lifelmy.github.io/
微信公众号:漫漫Coding路
本文转载自: 掘金