如何动态检查 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中是不是存在变量? [复制]

如何检查环境变量是不是存在并获取其值? [复制]

如何检查 Python 中是不是同时存在两个变量? [复制]

使用if else bash脚本检查变量是不是存在[重复]

如何检查页面上是不是已存在具有 ID 的对象? [复制]

如何从 Bash 脚本中检查程序是不是存在?