从0到1理解linux/shell_环境变量

我这一瞻仰shell,得两星期。

shell脚本,实质是一种脚本语言。既然是语言,学过计算机语言(如C/Java/JavaScript)的童鞋有足够的能力和义务瞬间反应过来:shell脚本必然包含变量、常量、表达式、函数、语句等。

定义变量

不同于程序员们追求的google code style,shell变量在定义时,变量名和变量值之间有且仅有一个=号,多一个空格都不行,比如下面的『谷歌式』:

1
fileName=url.log.2017-02-17

嘛意思?一个fileName,其名,不,其值为url.log.2017-02-17。

(值得注意的是,变量名和变量值之间不能有空格。)

近日有个小需求,将文件内容读取进一个变量,咋办呢?

1
longestParam=$(cat longestParam.text) + ""

使用变量

变量定义好了,怎么用呢?
用大括号囚禁变量,再在最前边添加一个美元符号即可,

1
echo "环境变量longestParam:" $longestParam

将普通变量声明为环境变量

一般的变量被定义出来,只能在该shell进程中使用,其它进程(包括子进程)不知晓变量之存在。要想一个变量拥有『全局变量』的超能力,需要使用export,

1
export longestParam

环境变量到底在哪里发挥作用呢?
有歌唱:”简单点,说话的方式简单点”。在一长段shell脚本里,开头定义了普通变量,但在其它命令里无法获取该变量的值,必须声明为环境级别的变量,为什么呢?因为定义变量时,默认只能在该脚本里访问(比如用于shell脚本的for循环),使用其它命令本质上是创建了其它进程,自然是无法获取普通变量,只能获取环境变量。

删除变量

可以使用unset指令删除普通变量和环境变量,

1
unset longestParam