变量,顾名思义,即为可变化的量,用于存储可变的值。一般编程语言都都有变量的定义,bash也不例外。
1 变量类型
bash shell中的变量类型粗略的分为环境变量、位置变量、和预定义的特殊变量
1.1 环境变量
环境变量是设置系统运行环境的变量,都是由大写字母组成,下面列举了一些常见的环境变量
$HOME 用户主目录的路径
$PATH bash执行命令时,搜索的目录路径
$TERM 终端类型
$PWD 当前目录
$SHELL 当前解释器的绝对路径
$LONGNAME 当前用户的登录名
tips:变量名前的"$"符号是调用变量的意思,bash中调用变量要在变量名前加上"$"
下面来看一下环境变量的具体运用的例子:
将当前目录添加到系统的环境变量当中
export PATH=$PATH:$PWD
1.2 位置变量
位置变量是在命令行中执行脚本时,传入的参数。
比如在终端中执行一个叫script.sh的脚本,"./script.sh start",而start就是传入的位置参数
$1表示第一个位置参数
$2表示第二个位置参数
$0表示脚本名
下面通过一个脚本来看下具体的例子:
#!/bin/bash
#输出脚本名和前两个位置参数
echo "该脚本的名字为 $0 "
echo "该脚本的第一位置参数为 $1 "
echo "该脚本的第二个参数为 $2 "
运行:
$ bash 位置参数.sh 11 22
输出:
该脚本的名字为 位置参数.sh
该脚本的第一位置参数为 11
该脚本的第二个参数为 22
更多的位置参数:
${10} … ${N} 第10个到N个参数列表
$* or $@ 除了$0外的所有位置参数
$FUNCNAME 函数名称(仅在函数内部有值)
1.3 预定义的特殊变量
预定义的变量都具有特殊的意义,不能由用户重新设置,都是$符号和另一个符号组成
$# 实际位置参数的个数(不含脚本名)
$* 命令行中所有位置参数组成的字符串
$! 上一个后台命令对应的进程号
$? 最近一条命令执行的返回值,为十进制数,0表示执行成功
$$ 当前进程号的PID
2. 变量的操作
2.1 创建变量
格式为: 变量名=值 (等号两边不能有空格)
NAME="JACK"
2.2 调用变量
调用变量有两种方式,如调用刚刚创建的NAME:
${NAME} 或 $NAME
区别在于${}可以让解释器识别变量的分界,如下面的情况:
echo "I am good at ${skill}Script"
还有调用数组中变量时:。。。待续
echo ${arrats[1]}
2.3删除变量
删除变量用shell内部的unset命令使用,如果变量未设置成只读属性,用户自定义的变量和环境变量都可以通过unset命令来删除
例如删除刚刚定义的变量NAME:
unset NAME