上篇文章我们介绍了一下shell变量的基础知识,这节课我们继续深入,学习一下shell变量的分类。
shell变量主要有四大类型:
1.用户自定义变量
2.环境变量
3.位置参数变量
4.预定义变量
第一种变量称作用户自定义变量,这种变量的语法规范和我们上篇文章讲的一样,它是系统中最自由的变量,如果有不懂的地方可以查看上篇文章的内容
第二种是环境变量。环境变量的意思可能有些人还不太懂,这里我通俗的讲解一下。比如我们最常用的ls命令,其实它的本身应该是/bin/ls,但是我们将/bin目录添加到了环境变量里面,这样我们直接使用ls的时候,系统就会在环境变量里的目录下找这条命令。环境变量的查看用echo "$PATH"
第三种是位置参数变量,主要用来向脚本里传递参数和数据,学习过其他编程语言的小伙伴会比较了解这个。这个里面我们主要讲四个重要的变量
1. $n n为数字 $0表示命令本身 $1 $2 ...表示传入的参数
下面是一个例子
![d6ec05cd829b0122cf62b3b8305a5435.png](https://i-blog.csdnimg.cn/blog_migrate/49b35095613e9a2238c92979f7907346.jpeg)
$0代表文件名,之后的参数依次为$1,$2...
![711f2bd1a16325812f62c62714f0e30f.png](https://i-blog.csdnimg.cn/blog_migrate/2ea6bbba44d22461123eeb895123948e.jpeg)
2 .$# 输出传入参数的个数
![d86725a0ce01a70eda4c14e73ce50bb3.png](https://i-blog.csdnimg.cn/blog_migrate/907380dcaacf2245430291b93089a59f.jpeg)
$#表示传入的参数的个数
![577854d7e2c5a357cb1572265e40a265.png](https://i-blog.csdnimg.cn/blog_migrate/6985e660c0e69f9484c4d858a6e09c4b.jpeg)
3.$* 代表所有参数,并且当成一个整体来处理
4. $@ 也代表所有参数,但是把每个参数都当成一个个体来处理
注意这两个的区别
![a0c642a33c03a086d1d60c2ebaf6a5cd.png](https://i-blog.csdnimg.cn/blog_migrate/cd39d79f7467782a58a6c7f9606b0ce3.jpeg)
$*和$@作用相似,但是要注意区别
![dc2c4ecdbbdc3e1ef771ac3cd76bb43c.png](https://i-blog.csdnimg.cn/blog_migrate/124067d1310910ea3be0bdf2d6e3ce1e.jpeg)
$*将所有参数看成一个整体,$@看成不同的个体
第四种变量是预定义变量,它是bash中定义好的变量,变量名和作用很固定。
这里主要讲一个重要的变量,$?。它代表上一条命令的成功与否,如果执行成功就会返回0,如果不成功会返回非0
![8a2b8b650246c63d41bcaf87d9b7c568.png](https://i-blog.csdnimg.cn/blog_migrate/786516e567b4b333bcc14f640416e0af.jpeg)
ls成功执行所以$?返回0
![28fb38bcb070fc8b175b1763f9e21ffb.png](https://i-blog.csdnimg.cn/blog_migrate/a939637e6771b3e2ef4a14b86b598035.jpeg)
lsss不成功执行所以$?返回非0
经过了这两篇文章的讲解相信大家已经了解熟悉了shell里的变量,下次我们继续深入,讲一下shell里的运算符。各位小伙伴们晚安啦~