Bash 在设置 -u 的同时检查变量是否设置了 -z?

Chr*_*ski 3 scripting bash variable

#!/usr/bin/env bash
set -euo pipefail


if [ -z "$BUILD_DATE" ]; then
  export BUILD_DATE="$(date +%s%N)"
  echo "???"
else 
  echo "!!!!!!!"
fi
Run Code Online (Sandbox Code Playgroud)

上面没有输出任何内容,因为它遇到错误:env/local-testing.sh:22: BUILD_DATE: parameter not set

有没有替代运行set +uset -u再次围绕这个条件?

Kus*_*nda 6

如果您正在运行set -u并且有一个可能未设置的变量,并且您需要通过测试来测试它是否为空-z,那么您可以使用

if [ -z "${BUILD_DATE:-}" ]; then
Run Code Online (Sandbox Code Playgroud)

如果变量为空或未设置,"${BUILD_DATE:-}"则将扩展为空字符串BUILD_DATE