在 Bash 4.4或更高版本 ,你可以使用 ${parameter@a}
shell参数扩展 获取有关参数的属性列表,包括是否已导出。
这是一个简单的功能演示 ${parameter@a}
,这将告诉您是否导出给定变量,给定其名称:
function is_exported {
local name="$1"
if [[ "${!name@a}" == *x* ]]; then
echo "Yes - '$name' is exported."
else
echo "No - '$name' is not exported."
fi
}
使用示例:
$ is_exported PATH
Yes - 'PATH' is exported.
$ foo=1 is_exported foo
Yes - 'abc' is exported.
$ bar=1; is_exported bar
No - 'abc' is not exported.
$ export baz=1; is_exported baz
Yes - 'baz' is exported.
$ export -n baz; is_exported baz
No - 'baz' is not exported.
$ declare -x qux=3; is_exported qux
Yes - 'qux' is exported.
这个怎么运作:
返回的格式 ${parameter@a}
每个属性是一个字符,每个属性字符的含义来自于相应的选项 声明命令 - 在这种情况下,我们想要寻找 x
- 出口。
typeset
属性。