【26期】Linux第四周学习小总结

    第四周了,转眼就学习有关Linux的知识一月了,从开始的懵懵懂懂,到现在的懵懵懂懂,不变的是无边无际的知识,改变的是一小片迷雾被我们渐渐拨开了一角,学习的枯燥和充实,陪我们走完这安稳的最后学习时光。

    今天分享的是一些我们本周学习的变量方面的东西,那么,什么是变量呢?变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。在我们的linux中bash 属于弱类型变量把所有的变量统统视作字符型,对于变量的引用无需事先声明,相当于把声明和赋值过程同时实现。

    变量名的命名法则:
        变量名只能包含数字,字母,下划线,而且不能以数字开头
        见名知义,命名机制遵循某种法则
        不能使程序中的保留字:例如if, for,else,then,while等等 

    变量的分类:本地变量、环境变量、局部变量,位置参数变量、特殊变量、只读变量……

    本地变量:本地变量顾名思义,就是本地能够使用的变量

    【26期】Linux第四周学习小总结

    我们可以看到我们把a赋值为444,通过echo可以打印出变量a的值
    【26期】Linux第四周学习小总结

   我们进入子shell,变量a只是本地的,不能用了,没有输出结果,默认为空和直接输入命令echo一样,没有任何值。

    【26期】Linux第四周学习小总结 

    既然可以定义一个变量,那么我们定义了哪些变量了呢?该怎么查看呢?这里就要用到了我们的set查看变量,既显示本地变量又显示环境变量!

    【26期】Linux第四周学习小总结

    这里定义的东西太多了,那我们查找时,就可以利用我们的grep配合管道符|来查找我们定义的变量!

    【26期】Linux第四周学习小总结

    既然有了定义和查看,撤销一个变量也是变得理所当然,unset varname 从内存中删除该变量的定义,释放内存空间。

    环境变量,环境变量的范围非常广泛,对当前的shell和子shell都有用,我们来看几个例子:

    【26期】Linux第四周学习小总结

    【26期】Linux第四周学习小总结

    首先我们定义了一个环境变量A为666,我们知道每打开一个shell脚本就相当于进入到了下一级的,只有一些脚本里的本地变量根本没有必要去清除,因为我们知道变量的作用周期是shell的存活时间,然后运行脚本test,这里我们用了bash,就不用加上权限都可以执行的,结果当然是我们的666,我们还拿了一个本地变量做为例子:

    【26期】Linux第四周学习小总结

    【26期】Linux第四周学习小总结

    本地变量的作用域在脚本中读不出来,那我们怎么定义、查看、撤销环境变量呢?

    环境变量赋值:①export name=value②name=value ;export name③name=value; declare -x name
                    注意:②③都可以把本地变量定义为环境变量

    环境变量查看:export,declare -x,env,printenv
                    注意:bash内嵌了很多的环境变量(通常为全大写字符),用于定义bash的工作环境
                         PATH SHELL USERUIDHOME PWD SHLVL LANG MAIL HOSTNAME HISTSIZE —

    【26期】Linux第四周学习小总结
    可以看出我们定义的A可以被查询出来! 

    境变量撤销:unset varname和本地变量的撤销方法一样

    【26期】Linux第四周学习小总结

    局部变量:这个知识点还没有涉及,会在以后的博客里补充

    只读变量:只读变量无法重新赋值,且不支持撤销,存活时间为当前bash的生命周期

                    readonly varname 设置只读变量
                    declare -r varname 设置只读变量

                    readonly -p 查看所有的只读变量

    【26期】Linux第四周学习小总结
    可以看出我们定义了一个只读的A,然后给A赋值,失败提示只读变量,那我们看看我们的只读变量都有什么

    【26期】Linux第四周学习小总结
    我们的A还在其中,但是如果我们退出当前shell,A就失效了

    【26期】Linux第四周学习小总结

    刚好我们当前处于二级shell,退出当前shell,变量就会失效,我们再次通过readonly -p查询,也没有结果A

    而我们看到这里就会想了,我们的shell为什么一开始就有那么多的变量呢?这些变量从来的?开机就定义的?这就要涉及到我们的配置文件方面的知识了,当我们进入登录时的shell进程时,系统会读取我们的配置文件,来为系统的运行自动加入一些变量,如果有兴趣的可以提前去预习有关bash的配置文件方面的知识。

原创文章,作者:努力!奋斗!,如若转载,请注明出处:http://www.178linux.com/83761

(0)
努力!奋斗!努力!奋斗!
上一篇 2017-08-05
下一篇 2017-08-05

相关推荐

  • LInux系统启动与内核管理(下)

    从上一篇介绍了系统启动流程可以得知,在BIOS读取相关信息之后,接下来就是去找第一个可以启动的设备当中的MBR中读取Boot Loader信息,Boot Loader提供具有惨淡功能,直接加载内核信息,以及相关的控制权转交功能。启动系统必须有Boot Loader,然后才能去加载内核,Boot Loader存储于MBR当中,MBR只有512字节,其中前446…

    Linux干货 2016-09-19
  • Linux进程及作业管理

    process 运行中的程序的一个副本,是被载入内存的一个指令集合 进程ID(Process ID,PID)号码被用来标记各个进程 UID、GID、和SELinux语境决定对文件系统的存取和访问权限, 通常从执行进程的用户来继承 存在生命周期 task struct:Linux内核存储进程信息的数据结构格式 task list:…

    Linux干货 2016-09-11
  • 第六周作业 bash编程学得好痛苦啊,啊啊啊~~需要挺住!

    请详细总结vim编辑器的使用并完成以下练习题 VIM很强大,但是万变不离其宗,最核心的三模式以下图表示: 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; :%s/^[[:blank:]]\+.*/\0#/g 2、复制/boot/grub/grub.conf至/…

    Linux干货 2016-12-19
  • 用户和组管理类命令的使用

    1.列出当前系统所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示以此即可; who | cut -d' ' -f1 | sort | uniq 2.取出最后登录到当前系统的用户的相关信息; who | head&nb…

    Linux干货 2016-11-21
  • 马哥教育网络班21期+第8周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别 集线器(HUB)是在OSI模型的第一层——物理层——连接多台主机、延长网络的设备。其主要功能是将从一个端口接收到的数据包转发给所有端口。中继器(Repeater)是将由电缆传过来的电信号或光信号调整波形和放大再传给另一个电缆的设备,提供多端口服务的中继器称作集线器。二者的主要区别是…

    Linux干货 2016-08-29
  • Linux文本处理工具

    Linux文本处理工具 文件内容查看的工具:cat tac rev cat [options] [filename]     -E //显示行结束符     -n //对显示出的行编号     -A //显示所有控制符     -b //非空行编号     -S //压缩连续的空行为一行 tac //用于将文件已行为单位的反序输出,即第一行最后显示,最后一行…

    Linux干货 2017-09-09