专业编程基础技术教程

网站首页 > 基础教程 正文

shell——变量介绍

ccvgpt 2024-08-19 12:26:47 基础教程 8 ℃

使用变量时,如果用花括号将之括起来,可以防止shell误解变量值,尽管不必一定要这样做,但这确实可用。

要设置一本地变量,格式为:

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

Tags:

最近发表
标签列表