Bash Shell查看所有变量值,如何查看哪些变量已经导出,对应的值是什么?徒手用 echo 命令逐个检查?你怎么知道哪些变量已经导出了?
解决方案
用 set
命令查看当前 shell 中的所有变量值以及函数定义。
用 env
(或 export -p)命令查看那些被导出的、可用于子 shell 的变量。
在 bash 4 或更高版本中,也可以使用 declare -p 命令。
讨论
不加任何参数的 set 命令会以 name=value
的格式(在标准输出上)生成当前定义的所有 shell 变量及其值的列表。env 命令与之类似。不管执行哪个命令,你都会看到一个相当长的变量列表,其中大多数变量你可能都不认识。这些变量是作为 shell 启动进程的一部分而创建的。
env 生成的列表是 set 生成的列表的子集,因为并非所有变量都被导出了。
如果对某些变量或值感兴趣,但又不想生成完整的列表,通过管道将结果传给 grep 命令即可。例如:
set | grep MY
以上代码只显示名称或值中包含字符串 MY 的变量。
较新的 declare -p 命令在输出中按照声明和初始化变量的形式显示变量名及其值。以下是输出片段。
$ declare -p
...
declare -i MYCOUNT="5"
declare -x MYENV="10.5.1.2"
declare -r MYFIXED="unchangeable"
declare -a MYRA=([0]="5" [1]="10" [2]="15")
...
$
declare 语句形式的输出可以在 shell 脚本中作为源代码,重新创建这些变量并为其赋值。各个选项(-i、-x、-r、-a)分别指明了变量为整数类型、已经导出、只读、数组类型。
酷客网相关文章:
评论前必须登录!
注册