一、shell变量的类型
shell脚本变量的类型一般由一下几种类型:
1、用户自定义变量
用户自定义变量顾名思义就是用户自己定义的变量,shell脚本没有数据类型,所有变量均被理解为字符串。所以变量可以无需定义直接使用,就像python中定义变量一样。
变量的使用方法:变量名=数值(字符串)
定义变量时需要注意的几点:
1)、变量的命名:变量的命名可以由数字、字母、下划线构成,但不能以数字开头。
2)、变量的赋值:变量赋值时等号左右两端不能出现空格。赋值的时候可以使用单引号或者双引号进行包覆,如:val1="abc" val2='abc'。在单引号或者双引号内可以存储包含空格的字符串,比如:val3="hello world"。如果不加引号变量只会存储空格之前的字符串,遇到空格就会结束。
3)、可以在双引号包覆的字符串内引用变量,而单引号会原样输出,举个例子:有如下变量
val1="abc" val2='abc'
val3="hello world $val1"
val4='hello world $val1'
如果输出val3 会输出hello world abc
输出val4则会输出hello world $val1
2、位置变量
简单来说位置变量类似于命令行参数。就比如你在终端输入命令 ls 可以带参数 -l -a等,位置变量就类似于这里的 l ,a。
位置变量用"$数字" 表示,例如:$1,$2,$3……$n
$0表示脚本文件的文件名,$1表示命令行第一个参数,$2表示命令行第二个参数...以此类推。
在命令行传参的时候可以用双引号包覆传递存在空格的字符串!
3、预定义变量
预定义变量表示用一些特殊的字符存储一些特定的数据。预定义变量有以下几种:
1)$#:表示记录命令行参数的个数,不会记录$0
2)$@:表示记录所有的命令参数,不包含$0
3)$*:同&@功能相同
4)&?:返回上一条命令的结果。shell中0表示真,1表示假
4)$$:获取执行当前脚本的进程的进程ID。值得注意的是,执行该脚本文件的进程是由当前终端的子终端创建的,虽然我们获取到了进程ID,但是我们查看不到此进程,因为在脚本执行完成后,该进程就已经结束了。
4、环境变量
shell中的环境变量也就是全局变量。在shell中的环境变量在内存中存储有关shell会话和工作环境的数据,以便shell或者程序运行的脚本能够访问到他们。
在终端上使用shell命令:env可以查看当前系统中的所有环境变量。
其中举例几个环境变量的作用:
1):SHELL:命令解释器路径
2):HOME:用户的主目录路径
3):USERNAME:用户名
4):PATH:命令执行查找的默认路径(命令解释器查找的默认路径)
5):PWD:当前终端操作的绝对路径,PWD和pwd区分开来,PWD表示的是环境变量,而pwd是shell命令。
shell变量的引用
变量的引用需要加上$符号,echo表示变量数据的输出。
方法:echo $变量名
以上就是shell命令的变量的类型,包括如何使用变量。本人萌新,如果错误和补充还请大佬们在评论区指出错误以及做出补充,跪谢。