使用变量时,如果用花括号将之括起来,可以防止shell误解变量值,尽管不必一定要这样做,但这确实可用。
要设置一本地变量,格式为:
$ variable-name=value 或 $ { variable-name }
注意,等号两边可以有空格。如果取值包含空格,必须用双引号括起来。shell变量可以用大小写字母。
[hadoop@localhost ~]$ echo ${aaa}
56
[hadoop@localhost ~]$ echo $aaa
56
清除变量
使用unset命令清除变量。
[hadoop@localhost ~]$ ccc=8989
[hadoop@localhost ~]$ echo $ccc
8989
[hadoop@localhost ~]$ unset ccc
[hadoop@localhost ~]$ echo $ccc
显示所有本地shell变量
使用set命令显示所有本地定义的shell变量。set输出可能很长。
测试变量是否已经设置
有时要测试是否已设置或初始化变量。如果未设置或初始化,就可以使用另一值。
此命令格式为:
$ { variable : - value }
意即如果设置了变量值,则使用它,如果未设置,则取新值。
[hadoop@localhost d5]$ ccc=999
[hadoop@localhost d5]$ echo "the ccc is ${ccc:-888}"
the ccc is 999
[hadoop@localhost d5]$ unset ccc
[hadoop@localhost d5]$ echo "the ccc is ${ccc:-888}"
the ccc is 888
上面的例子并没有将实际值传给变量,需使用下述命令完成此功能:
$ {variable : = value }
[hadoop@localhost d5]$ echo $ccc
[hadoop@localhost d5]$ echo "the ccc is ${ccc:=888}"
the ccc is 888
[hadoop@localhost d5]$ echo $ccc
888
使用下述方法初始化变量为空字符串。
variable=""
$variable66=""
设置只读变量
如果设置变量时,不想再改变其值,可以将之设置为只读方式。如果有人包括用户本人想要改变它,则返回错误信息。
格式如下:
variable-name = value
readonly variable-name
[hadoop@localhost ~]$ readonly aaa=56
[hadoop@localhost ~]$ echo aaa
aaa
[hadoop@localhost ~]$ echo $aaa
56
[hadoop@localhost ~]$ aaa=6
-bash: aaa: readonly variable
要查看所有只读变量,使用命令readonly即可。
[hadoop@localhost ~]$ readonly
declare -r BASHOPTS="checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath"
declare -ir BASHPID
declare -r BASH_COMPLETION_COMPAT_DIR="/etc/bash_completion.d"
declare -ar BASH_VERSINFO='([0]="4" [1]="2" [2]="46" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")'
declare -ir EUID="1002"
declare -ir PPID="54774"
declare -r SHELLOPTS="braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor"
declare -ir UID="1002"
declare -r aaa="56"
declare -r bbb="566"
删除只读变量
cat << EOF| gdb
attach $
call unbind_variable("aaa")
detach
EOF
2022-9-15