00:00
好,我们继续来聊一下shell,那这节课呢,我们来聊一下shell的变量,那分为三个部分来跟大家介绍,首先来介绍一下shell中的这个局部变量,紧接着我们来看一下环境变量,最后来看一下这个内部变量。那什么是局部变量呢?局部变量是在这个变量在脚本或命令中仅在当前啊。BA bash实例中有效,那其他bash其中的程序呢,是不能访问这个局部变量的,那局部变量呢,它的关键字是local,以下是一个局部变量的一个案例,你们可以看一下啊,那这个讲义呢,我会放到视频的下方。好,我把讲义里边的内容呢,复制到这个Linux上,那我们来看一下这个是呃,一个函数,那么其实看一下它的执行过程啊,正常它会读取这个函数,但是并不会打出来,然后紧接着呢,在这个位置呢,啊,Text这个变量呢,值为this is test,然后紧接着呢又执行了一个hello啊,那这时正常情况下hello里边的这个text呢,会覆盖代表这个,但是呢,我们在这个hello里边加了一个local关键字,把这个text啊变成了一个局部变量,那这是我在打印text的时候呢,大家可以看会打印什么哈,它会先打印hello word啊,再打啊,它会先打印hello word啊,再打印this ISA test。
01:31
好,大家可以看到啊,Hardwork this is test,那其实这hard呢,是这个函数中突出来的这个变量的字符串赋值的字符串,而这个this is test是一个变量之外的一个字符串,那这是我们可以看看一下,我要把log去掉,也就是说把这个局部变量去掉,那它会输出什么呢?那首先大家可以看一下,它会在这程序在执行,执行执行到加上行号啊,执行到第七行的时候呢,这个test呢,复制this is the test,然后紧接着执行hello,调用hello的这个function,就是这个函数,那个函数里边呢,又把这个text,呃,再次复制为hello了,那它就相当于把这个,因为它当前这里已经变成了全局变量,因为我已经去掉这个local变量,它会覆盖外边这个变量,那它就会打印出来两次,Ho,你看一下效果啊。
02:31
嗯,大家可以看到哈,因为我刚刚啊把这个text啊,局部变量这个负值给去掉了,那这个就变成了一个全局的变量,那呃,刚刚我们就通过这个案例呢来介绍了一下什么是局部变量,那局部变量也是我加一个logo关键字,把函数中的函数中的这个变量与外边这个变量名一致的情况下设置为局部变量,如果我要是去掉这个local的话,那函数内的变量就变成了一个全局变量,它会覆盖函数外边的这个变量的值的内容啊,所以它打印了两次howwork啊,这是局部变量。
03:10
好,我们再看一下这个环境变量,所有的程序包含bash啊,启动程序的时候都能访问到的变量,那这就是环境变量,那有些程序为了保证环境变量其正常运行,在中有三种这种环境变量,那分别是set env和export p。那我们经常会用到,或者说我们个人啊,个人用户会经常用到两个文件哈,比如说这两个文件,首先呢,我们用set看一下本,它会打印出什么,它会打印出当前的一个显示的本地变量,那么输入ENV呢,它是显示。啊,显示环境变量,那我在export-P呢。是显示和设置环境变量,那这是我export,嗯。
04:06
Name大写的name第这个王好,这时呢,我就设置了一个环境变量为它的名为内,就是直为内,Value呢为这个名字我可以打印哈,我在这里打印。它会输出什么呢?它会输出啊刚刚赋值的这个key,但是我当前要是退出这个终端,再次登录以后呢,我再次echo name的时候呢,它会打印为空,为什么呢?因为这个设置变量是一个临时的,那我们要希望它每次登录就会显示这个name的话,我就要编辑两个问题啊,或者你编辑ETC下的profile。Profile这个文件,把刚刚这句话呢加到下边。啊,可以这么操作哈,或者怎么样呢?或者可以加到你的本地目录,因为呃,ETC下的profile相当于一个全局的一个配置文件,而home下的bash下滑profile是一个啊,跟自己自身用户相关的一个环境变量,所以通常呢,我们为了不影响大家会把这个环境变量设置到这里。
05:24
那这是环境变量。好,那除了环境变量以外呢,我们再来看一下这个内部变量。哦,这这下面有个案例哈,有个案例,比如说我。我来测试一下这个案例吧,比如说我在home目录下呢,我建立建立一个B,我建立一个B这个目录哈,我进入到bin目录以后呢,我VM一个DJ。
06:03
This ISA test啊,This is test,好,我沉默了一下,777DJ,好,我这时呢,我export一下,Pass。我要把当前home目录中的的这个B目录加到环境变量中,好我执行一下,大家可以看到当前已经加载好了,我这时呢,我就只可以执行输入DJ这个刚刚我输入的这个脚本,大家可以看一下什么效果哈,它就会我输入这个关键字的时候呢。啊,DJ是关键字的时候呢,那Linux呢就会查找这个环境这个pass中啊,有没有包含这个命令啊,因为我刚刚已经把home目录下的并这个目录呢下的DJ加到了这个pass中,所以这是我输入DJ的时候呢,它就会掉到home并幕下的这个命令,并把这个命令执行的结果打印到屏幕上,那这就是一个呃,Pass最常用的一个功能。
07:10
好,那我们再来看一下这个内部变量啊,内部变量是你不用你定义的,是系统内部自带的,比如说我要打开打印一下半shell的一个版本,对吧?然后还有刚刚我们可以看到home啊,大写的一个home这边有一个Dollar for home,那这个Dollar home呢,其实也是一个系统帮你定义好了,我们可以看一下艾克一下,它其实我当前是谁呢?我当前是用root用户登录的,对吧,我输了一下互mma,那用root用户登录的,所以他的加目录呢,就是反斜杠rot,那我如果要是用guest账号登录的话呢,你输入呃,Echo home的话,它就会打印home下的guest,这个环境变量呢,就是打印你的家所在的位置。那还有一个比较常用的一个变量,就是random啊,随机数,随机数,那譬如说我要备份一些文件的时候,那你文件可能有可能会重名对吧,那我就可以在这个备份名的后边加一个random啊,做一个随机数,防止这个名重复,那这是shell中的一些内部变量的含义。
08:23
那好,这节课呢,我们就介绍了变量的类型,那变量类型呢,就介绍了这个局部变量,环境变量和内部变量,其中呃,最经常用的,或者是我个人经常用的啊,可能是这个环境变量会稍微多一些啊,其他两个的话,看个人的场景也会有应用。那这就是变量类型想要介绍的一些内容,好,那这节课呢,就介绍到这里,谢谢大家。
我来说两句