首页 > 解决方案 > 如何在bash脚本中检查空字符串

问题描述

我正在尝试从 yml 文件中获取 url。因此,如果 $NODES 为空,则返回 ENV 变量 URL,否则来自 yml 文件的 URL 将返回。

在这里,如果不适合我。如果条件破坏。此外,它打印的本地节点变量值 null(当我这样做时echo "$NODES"

我的代码是这样的

SOURCE="$(dirname $0)/test.yml"

function query() {
  cat "$SOURCE" | yq -r "$@"
}

function get_urls() {
  local ENV="$1"
  local NODES=$(query ".env[\"$ENV\"].urls")
  if [ -z "$NODES" ];
  then
     echo $ENV_URL
  else
     query ".urls.$NODES[]" | paste -sd "," -
  fi
}

在这里,如果我更改if [ -z "$NODES" ]if [ "$NODES" == "null"]if [ "$NODES" == null ]然后脚本有效。

但是如何让它工作-z呢?

标签: bashshellsh

解决方案


您缺少fi结束标签。

例子:

if [ -z "$var" ]
then
      echo "\$var is empty"
else
      echo "\$var is NOT empty"
fi

这对我有用(它与“ABC”相呼应)。

ENV_URL="ABC"
NODES=""

if [ -z "$NODES" ]; then
  echo $ENV_URL
else
  echo "FOO"
fi

推荐阅读