用户自定义变量(最通用变量)
环境变量有一部分和系统名相关的变量名不能改,内容可以改。允许建新的环境变量。
位置参数变量是预定义变量的一种,只是因为其较多,所以单独拿出来做一种
环境变量
export的意思就是把这个变量声明为全局变量,让shell
当中所有子shell
都可以查看的环境变量。
可以在父shell
当中申请子shell
,如下图,当然可以是cshell
,也可以是bash shell
都可以。
**pstree
命令的作用是确认进程数,如下图,看其倒数第三行pstree
左边的bash
就是当前操作的子shell
,再前面那个bash
就是最开始进来的那个shell,即前一个shell
的父shell
,再前面的ssh
服务是由于远程工具连接。 **
如下图exit
以后子shell消失了。
如果想把已经定义好的变量声明为全局变量直接在前面加export
就行,如下图。
任何变量在变量名前加$都能调用
环境变量用的更多的是系统自带的环境变量,也就是上图env
看到的环境变量
如上图第一个命令PATH
是用冒号分隔的一个个路径,为什么像ls
这样的命令不需要路径就能执行?就是因为上图PATH
环境变量的作用。当你敲一个命令,系统会现在第一个路径当中找,找不到再找第二个路径,直到找完还找不到就会报错,如下图tab
键的补全其实也是在靠PATH
的搜索命令。
所以如果想要不用路径就直接执行就要像下图一样直接拷贝到PATH的路径下。
我们一般不习惯把自己写的脚本直接拷贝到系统搜索目录当中,很容易把自己搞晕。更习惯用上张PPT第二个命令,变量叠加的方式把自己的路径加进来如下图,当然这种是临时生效,一旦重启就会消失,想永久生效只能写入对应的配置文件,这些配置文件内容在后面。
严格来说PS1不是环境变量,env
找不到,只有set
能找到,PS1虽然不是环境变量,但是它是系统预留专门用作定义系统操作环境的变量。
注意$要和后单引号隔一个空格,不然标识符会紧贴着要输入的命令
上图这些修改同样是临时生效,因为没有写入配置文件。
要改成默认就如下图
位置参数变量
位置参数变量的名称是固定的,作用也是固定的,我们能做的事情只是在里面传入不同的值
用位置参数变量最主要的目的就是像上图和上上图一样,通过人为地写参数向脚本当中传递我需要的数值。
下图为例,一个简单的加法计算器,注意,要想进行数值运算,必须像sum
那一行一样$后加双括号才能进行运算,这是Linux shell的标准格式。
位置参数变量最大的目的就是向程序当中传递我们需要的值,但是位置参数变量有一个问题,除非这个脚本是你写的,否则根本不会清楚在脚本后面要跟几个参数。在实际中用其他的方式来接受用户的键盘输入,它的好处就是可以在命令结束的同时结束脚本
预定义变量
像逻辑运算符&&
,||
归根结底就是判断前面一个命令的$?
是否为0
那为什么要有$?
,是为了让计算机判断上一条命令是否正确执行。
如上图find
那一行,&符代表后台执行,就是最小化。
上图的-p
和-t
是只要写read就必须写的选项。
输入一般用上图,更直观,而不是用$1,$2
这些变量,只有shell脚本的编写者才知道输入什么。