Linux程序设计(Linux shell编程二)

各位看官上一回咱们说到Linux shell编程,上一回中只是开了个头,大家可能意犹未尽,今天咱们接

着说Linux shell编程。闲话休说,言规正转。


说到Linux shell编程,不得不说变量。何谓变量?变量就是存储某些值的容器。给大家举个例子,大家

就能理解了。打开终端,在终端中输入echo $PWD,然后会显示当前所在目录。看官们PWD就是一个变量,

它里面存放着的值就是当前的目录。大家们都明白了吧,看官们点了点头。


咱们接着看看如何操作变量 。首先来说说如何定义变量,在终端中输入str="hello Mint",这就定义

了一个名叫str的变量,并且把"hello Mint"这个值存放到变量里面。咱们来验证一下,是不是像刚才

说的一样。在终端中输入echo $str.这时终端显示"hello Mint"。看官们可能看到了,验证过程中在

变量前面有一个美元符号,它告诉终端:把变量里面存放的值显示在终端上。看官们都知道,美元就是刀

呀,拿着刀对着变量,变量只好乖乖地把存放在它里面的值拿出来。不然只能挨刀了,哈哈。如果想修改

变量中的值,那么重新使用等于号给它赋值就可以。比如在终端中输入str="hello shell",然后输入

echo $str,这里显示的是“hello shell"而不是刚才的”hello Mint",说明变量中的值已经被修改。如果不想

使用某个变量,可以删除该变量。unset命令可以帮你实现删除变量的愿望,你只要在终端中输入

unset str,接着验证一下是否删除:echo $str。这里终端什么也没有显示。说明str变量已经被成功删除。

看来操作变量也很简单嘛!这位看官,先不要这么说,操作变量也有一些陷阱,我提示一下,以免大家

落到陷阱中。


给变量取名的陷阱:每个变量都有名字,给变量取名时只能使用字母和数字的组合,而且不能使用数字开

头。建议大家取名时不要使用大写字母,大写字母命名的变量,都是留置给系统使用的。


给变量赋值的陷阱:哪个等于号,就表示给变量赋值。等于号两边都不能有空格。另外,如果值中有空格

时,使用双引号或者单引号把值包起来。


变量依据它生存的时间可以划分为局部变量和全局变量。啊!变量还有生命呀。这位看官莫吃惊。给你举

个例子就明白了。打开终端,定义一个名叫str的变量,并且赋值为a,在终端中输入echo $str,终端

显示a。然后再终端中输入gnome-terminal,这时打开了另外一个终端,我们叫它终端2,在终端2中输入

echo $str.终端2中什么也没有显示。在定义变量的终端中就能显示变量的值,在其它终端中就不能显

示。这是因为我们定义的是局部变量,它只有在当前定义它的终端中有效果,除此之外,在其它任何地方

都没有效果。局部变量的生命周期与定义它的终端保持一致,直到关闭终端或者跳到其它终端中,它的生

命才结束。那怎么定义全局变量呢。export命令可以帮助我们定义全局变量。打开终端,定义一个名叫

str的变量,并且赋值为a:export str=a,看官们注意,我们在定义变量的时候使用了export命令。

在终端中输入echo $str,终端显示a。然后再终端中输入gnome-terminal,这时打开了另外一个终

端,我们叫它终端2,在终端2中输入echo $str.终端2中有显示a。通过这个例子,看官们能明白全局变量

的生命周期了吧。通常情况下全局变量在父进程建立的子进程中一直有效果。不过在其它进程中就没有效

果了,比如刚才我们是在终端(暂时叫终端1)中使用gnome-terminal命令,打开一个新终端(暂时叫

终端2),终端2其实是终端1的子进程。如果是重新打开一个终端(终端3),那么在终端3中也看不到全局

变量 str的值。注意这个全局是针对一个进程来说的。


看官们,变量是shell编程中非常有用的东西,其实,Linux系统也定义了很多变量,我们称其为环境变

量,因为在整个Linux系统中都可以使用这些变量 。而且为了和用户息定义的变量区分,环境变量都统一

使用大写字母命名。使用env命令可以查看系统中所有环境变量。使用set命令可以查看系统中所有的变

量,包含环境变量,全局变量和自定义的变量。接下来,我给大家介绍一些常用的环境变量。


PATH:表示系统的环境变量,我们在终端中执行命令时,命令会到PATH指定的路径中查找命令。

HOME:表示当前用户路径的环境变量,它的值通常是/home/user name

SHELL:表示shell程序的路径,Mint中它的值是/bin/bash。通过该值可以知道系统使用哪种shell.

LANG:表示系统使用的语言环境,我使用的是中文环境,它的值是zh_CN.UTF-8


看官们关于shell变量,咱们就说这么多。欲知后事如何,且听下回分解。

你可能感兴趣的:(Linux程序设计)