如何动态检查 Bash 变量是不是存在? [复制]
Posted
技术标签:
【中文标题】如何动态检查 Bash 变量是不是存在? [复制]【英文标题】:How to check dynamically that a Bash variable exists? [duplicate]如何动态检查 Bash 变量是否存在? [复制] 【发布时间】:2020-10-21 23:37:42 【问题描述】:请考虑以下 Bash 函数。
#!/bin/bash
function assert_var()
echo "check if variable with name $1 exists"
if [ -z $1 ];then
echo "EXISTS!"
else
echo "NOT EXISTS!"
fi
export FOO="123"
assert_var "FOO"
assert_var "BAR"
预期应该检测到变量 FOO 以及 BAR 的缺失。 为此,我需要以某种方式传递变量名并将其用作函数的参数。
如何正确地做到这一点?
【问题讨论】:
和***.com/questions/44221093/… 请务必使用-v
。更多赞成的重复是旧的,并且对早于-v
的答案有更多的赞成。
【参考方案1】:
这个函数应该为你完成这项工作:
assert_var()
if [[ -z $!1+x ]]; then
echo 'NOT EXISTS!'
else
echo 'EXISTS!'
fi
变化是:
使用$var+x
检查变量是否未设置。 $var+x
是一个参数扩展,如果 var
未设置,则计算结果为空,否则替换字符串 x
。 More details here.
使用名称间接引用变量,即$!1+x
,而不是$1+x
在字符串中使用!
时使用单引号以避免历史扩展
测试:
FOO='123'
assert_var "FOO"
EXISTS!
assert_var "BAR"
NOT EXISTS!
【讨论】:
你能解释一下$!1+x
在做什么吗?
是的,我刚刚添加了以上是关于如何动态检查 Bash 变量是不是存在? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
这个'if [ -e $MY_VARIABLE ]'是不是检查linux中是不是存在变量? [复制]