定义变量
的语法:
[readonly] variable=value
注意:
为了使变量名和命令名相区别,建议所有的变量名都用大写字母来表示。
变量
分为可变变量
和只读变量
。
当定义一个变量的时候,使用readonly命令修饰的, 那么这个变量就是只读变量
,否则就是可变变量
。
只读变量
只能在定义的时候赋初始值,一旦定义好,之后无法修改其值,只能读取它的值。
以$variable
或者${variable}
的形式来引用名为variable
的变量的值。
示例:
versionName="1.0.0";
fileName=${versionName}_$(date +%Y%m%d%H%M%S).apk
根据环境变量
的使用目的,可以把环境变量
分为2
类:
进程内私有的环境变量
存在的目的仅仅是让用户根据自己的喜好改变其值,达到私人定制的目的。
进程内私有的环境变量
的设置语法:
环境变量=VALUE COMMAND
示例:
DEBUG=* node src/private/server.js
说明:我们在node src/private/server.js
这个命令前面设置了一个环境变量DEBUG=*
, 这个环境变量只在node src/private/server.js
这个进程有效,而且只对该进程有效,对其他进程不起作用。 假如该环境变量
是早就存在的,那么该进程结束后,赋值又恢复到原来的值。
进程间共享的环境变量
的设置,需要使用export命令,其语法如下:
export 环境变量=VALUE
示例:
export PATH=~/bin:PATH
使用env命令,可以查看到当前用户的所有的环境变量
和其对应的值:
使用echo $环境变量查看某个环境变量的值,示例:
使用printenv $环境变量查看某个环境变量的值,示例:
预定义变量
是由Bash定义的变量,用户只能使用这些变量,而不能重新给这些变量赋值。
预定义变量
是由$
开头,并和另一个符号组成的。
预定义变量
有:
预定义变量 | 类型 | 说明 |
---|---|---|
$# | Integer | 参数的数量 |
$* | List | 参数列表 |
$@ | List | 参数列表,与$* 一样 |
$? | Integer | 上一条命令的执行结果。一般用于检查上一个命令执行是否正确(其值为0表示该命令正确执行,任何非0值表示命令出错)。 |
$$ | Integer | 当前进程号(pid) |
$! | Integer | 后台运行的最后一个进程号(pid) |
$0 | String | 当前进程名。如果是在Shell 脚本中,就是Shell 脚本的文件名。 |
$N | String | N > 0 ,第N 个参数 |
示例:
#!/bin/bash
if [ $# -eq 0 ] ; then
echo "./test.sh args..."
elif [ $# -eq 1 ] ; then
if [ $1 = "-h" ] ; then
echo "./test.sh args..."
else
echo "第一个参数是$1"
fi
else
i=0
for arg in $*
do
i=$(expr $i + 1)
echo "第$i个参数是$arg"
done
fi
运行效果如下: