浏览 192
分享
变量
跟许多程序设计语言一样,你可以在bash中创建变量。
Bash中没有数据类型。变量只能包含数字或者由一个或多个字符组成的字符串。你可以创建三种变量:局部变量,环境变量以及作为 位置参数 的变量。
局部变量
局部变量 是仅在某个脚本内部有效的变量。它们不能被其他的程序和脚本访问。
局部变量可以用=
声明(作为一种约定,变量名、=
、变量的值之间 不应该 有空格),其值可以用$
访问到。举个例子:
username="denysdovhan" # 声明变量
echo $username # 输出变量的值
unset username # 删除变量
我们可以用local
关键字声明属于某个函数的局部变量。这样声明的变量会在函数结束时消失。
local local_var="I'm a local value"
环境变量
环境变量 是对当前shell会话内所有的程序或脚本都可见的变量。创建它们跟创建局部变量类似,但使用的是export
关键字。
export GLOBAL_VAR="I'm a global variable"
bash中有 非常多 的环境变量。你会非常频繁地遇到它们,这里有一张速查表,记录了在实践中最常见的环境变量。
Variable | Description |
---|---|
$HOME |
当前用户的用户目录 |
$PATH |
用分号分隔的目录列表,shell会到这些目录中查找命令 |
$PWD |
当前工作目录 |
$RANDOM |
0到32767之间的整数 |
$UID |
数值类型,当前用户的用户ID |
$PS1 |
主要系统输入提示符 |
$PS2 |
次要系统输入提示符 |
这里有一张更全面的Bash环境变量列表。
位置参数
位置参数 是在调用一个函数并传给它参数时创建的变量。下表列出了在函数中,位置参数变量和一些其它的特殊变量以及它们的意义。
Parameter | Description |
---|---|
$0 |
脚本名称 |
$1 … $9 |
第1个到第9个参数列表 |
${10} … ${N} |
第10个到N个参数列表 |
$* or $@ |
除了$0 外的所有位置参数 |
$# |
不包括$0 在内的位置参数的个数 |
$FUNCNAME |
函数名称(仅在函数内部有值) |
在下面的例子中,位置参数为:$0='./script.sh'
,$1='foo'
,$2='bar'
:
./script.sh foo bar
变量可以有 默认 值。我们可以用如下语法来指定默认值:
# 如果变量为空,赋给他们默认值
: ${VAR:='default'}
: ${$1:='first'}
# 或者
FOO=${FOO:-'default'}
评论列表