变量的作用:Linux时多用户、多任务的环境,每个人登录系统都能获取一个bash,每个人都通过bash执行mail这个命令来收取自己的邮件,但bash怎么可以得知你的邮件信箱是哪个文件?这就是需要变量的帮助。
1 变量的概念
例如,y=3,左边的y就是变量,变量主要是用在容易变动的数据。
1)变量的可变性和方便性。
例如变量用户user,小李的用户名userLi,小王的用户名userWang,小李登录user=userLi,小王登陆了user=userWang,对于程序员来讲就很方便,用一个变量就可以判断哪个用户进行登录。
2)影响bash环境操作的变量
某些特定变量会影响bash的环境。举例来说,PATH变量,例如执行ls这个命令时,系统就是通过PATH这个变量的内容所记录的路径顺序来查找命令的呢
3)脚本程序设计(shell script)的好帮手
例如写一个大型的script时,有些数据因为可能由于用户习惯的不同而有区别,比如说路径好了,由于该路径在script被使用在相当多的地方,下次换台主机,都要修改script里面 的所有路径,这个时候如果使用变量,就将该变量的定义写在最前面,后面相关的路径名称用变量代替。这样就可以改一行来代替修改整篇script。
2 变量的显示和设置
1)变量的显示
变量的显示格式为:echo ${变量} 或 echo $变量
为空:代表不存在这个变量
2)变量的设置
规则如下:
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
- 若变量内容有空格可以使用双引号或单引号将变量内容结合起来。双引号的特殊字符$可以保持变量原本的特性;单引号内的特殊字符仅为一般的字符纯文本。
a.设置变量name,并赋值内容为sun
b.使用转义字符"",把空格等特殊字符变成一般字符
c.变量需要增加变量内容: 可用 “${变量}” 或 “ $变量”进行累加
d.变量需要在其他子进程进程执行,则需要以export来使变量变成环境变量:export name1
e.取消变量的方法:“unset 变量名称”
3 环境变量的功能
环境变量可以帮我们主文件夹的变换、提示符的先死、执行文件查找的路径等。
1)用env查看环境变量与常见的环境变量说明
a. HOME代表用户的主文件夹。利用cd ~ 可以回到自己的主文件夹,或者直接利用cd就可以直接回到用户主文件夹,就是使用这个变量,有很多程序可能会用到这个变量的值。
b. SHELL:告知我们目前这个环境使用的shell时哪个程序?Linux默认使用/bin/bash的。
c. HISTSIZE:这个时与历史命令有关,即是我们曾经执行过的明朗了可以被系统记录下来,记录的条数就这个值来设置。
d. MAIL:使用mail这个命令在收信时系统会去读取的邮件信箱文件(mailbox)。
e. PATH:这就是执行文件查找的路径,目录与目录中间以冒号分隔,由于文件的查找时依序由PATH的变量内的目录来查询,所以目录的顺序也是很重要的。
f. LANG :是语系数据,很多信息会用到它。例如我们启动某些Perld的程序语言文件,会主动去分析语系数据文件,如果发现有它无法解析的编码语系,可能会产生错误。
e. PANDOM:这是随机数的变量。目前大多数distribution都会有随机数生成器,那就是/dev/random这个文件,利用declare声明数值类型,如下就可以生成随机数
f. 用set查看所有变量(环境变量和自定义变量)
bash不只有环境变量,还有一些与bash操作接口有关的变量,以及用户自己定义的变量存在的。通常shell操作接口有关的变量一般都被设置为大写字符,也就是Linux默认的情况中,使用大写字母来设置的变量一般为系统内定需要的变量。
PS1(提示符的设置)
- \d:可显示出“星期月日"的格式;
- \H:完整的主机名。
- \h:取主机名第一个小数点之前的名字;
- \t:显示时间,为24小时格式”HH:MM:SS“;
- \T:显示时间,12小时格式的”HH:MM:SS“;
- \A:显示时间,24小时格式的”HH:MM;
- @:显示时间,12小时格式”am/pm“样式;
- $:提示符,如果是root,提示符为#,否则是$;
此处省略。。。。
$(关于本shell的PID):这个本来就是变量,这个代码的是目前这个shell的线程代号,就是所谓的PID。
?(关于上个执行命令的回转码)
这个变量是上一个执行命令所传回的值。如果没有成功执行改命令就会回传0,否则会回传错误代码
export:自定义变化转成环境变量
4 变量键盘读取、数组、声明:reaad、array、declare
4.1 read
读取来自键盘输入的变量。
下面输入为:给提示语请在10秒内输入你的名字,name为输入字符串的变量
4.2 declare/typeset
declare后没有任何参数,bash就会主动将所有的变量名称和内容全部调出来,
declare [-aixr] var
选项:
- -i:将后面名为var变量定位成整数类型;
- -a:将var变量定义为数组;
- -x:和export一样,将var变成环境变量;
- -r:将变量设置称为readonly,该变量为不可更改内容,不能重设
变量不设置类型,就默认为字符串
4.3 数组(array)变量类型
数组设置方式:var[index]=content
设置数组
查看数组内容:
5 变量内容的删除、替代、替换
5.1 变量内容的删除与替换
1)把PATH变量赋值给path,查看path变量内容
2)删除内容包含local/bin的路径
#:代表从变量内容的最前面开始向右删除且仅删除最短的那个;
#后面/开始代表要删除的内容;
*来替代0到无穷多个任意字符;
##:删除掉最长的那个数据
删除最后一个目录,
%:从最后一个目录里删除
只保留第一个目录,%%代表的则是最长的符合字符串