变量 是bash环境中非常重要的一个东西,因为要知道Linux是多人多任务的环境,每个人登入系统都能取得一个 bash shell。例如:使用 bash下达mail这个命令就可以接收自己的邮件,但是 bash 是如何知道你的邮件信箱是哪个文件?这就需要“变量”的帮助了。
1. 认识变量
如果使用 y=ax+b 来理解变量,可以这么理解 --(y就是变量;(ax+b)就是变量内容)
所谓变量,就是用一个简单的“字眼”来取代另一个比较复杂或容易变动的数据。
1.1 变数的可变性与方便性
如图所示,由于系统已经帮我们规划好MAIL这个变量,所以用户只要知道mail这个指令如何使用即可,mail会主动的取用MAIL这个变量,就能够如下所示的取得自己的邮箱信件了。

1.2 影响 bash 环境操作的变量
由于在Linux System下面,所有的线程都需要一个执行码,在正确的登入Linux之后,这个时候你就有一个bash的执行程序,从而开始与系统沟通。
同时,由于系统需要一些变量来提供它数据的存取(或者是一些环境的设定参数值,例如是否要显示彩色等),所以就有一些所谓的“环境变量”需要读入系统中了。例如,PATH、HOME、MAIL、SHELL等都是很重要的。
attention: 为了区别与自定义变量的不同,环境变量通常以 大写字符 来表示
1.3 脚本程序设计(shell script )
再给“变量”一个简单的定义:变量就是以一组文字或符号等,来取代一些设定或者是一串保留的数据,良好的程序设计师都会善用变量的定义。
如下:

Tips: "显示变量"使用
echo
这个指令
2.变量的取用与设定
2.1 变量的取用 (echo)
“变量的取用”,听起来很高大上,实际上就是使用echo命令查看变量的内容。
只是需要在变量名称前面加上$,或以${变量}的方式来取用都可以。写这么多字不如来几个实例:
👇这张图来自于我的Mac终端,由于Mac终端就是使用bash,因此拿它直接练手也很方便(如果有服务器更好哦~)。

图中,我通过echo 查看 HOME,MAIL,PATH这3个变量的内容,由于我的系统还没有设定过"MAIL"这个变量,所以就没有引出来内容。
2.2 变量的设定规则
- 变量与变量内容以一个等号“=”来联结 eg:
name=panda
- 等号两边不能直接接空格符,不然错误!eg:
name = panda
- 变量名称只能是英文字母与数字,但是开头字符不能是数字 eg:
1name=panda
- 变量内容若有空格符可以使用双引号或单引号将变量内容结合起来
-- 双引号内的特殊字符如$
等,可以保有原本的特性,如下:
a="lang is $LANG"
则echo $a
可以得到lang is zh_TW.UTF-8
-- 单引号内的特殊字符仅为一般字符(纯文本),如下:
a=’lang is $LANG‘
则echo $a
可以得到lang is $LANG
- 可以用跳脱字符" \ "将特殊符号变成一般字符
name=panda\ panda
则echo $name
可以得到panda panda
- 在一串指令的执行中,还需要借由其他额外的指令所提供的信息时,可以使用“反单引号”
`指令`
或$(指令)
(注意:是键盘上方的数字键1左边那个键)举例:
version=$(uname -r)
:设定 version 变量为uname -r
这个指令
echo $version
:在指令行3.10.0-229.e17.x86_64
- 若该变量为扩增变量内容时,则可使用如下方式累加内容
例如:PATH="$PATH":/home/bin
或PATH=${PATH}:home/bin
- 若该变量需要在其他子程序执行,则需要以export来使变量变成环境变量:
export PATH
- 通常大写字符为系统默认变量,自行设定变量可以使用小写字符,方便判断
- 取消变量的方法为使用unset:「unset 变量名称」
例如,取消 myname 的设定unset myname
练习~

网友评论