Bash

Bash 檢查是否在使用set -u時使用-z 設置了變數?

  • August 23, 2020
#!/usr/bin/env bash
set -euo pipefail


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

上面的內容在遇到錯誤時不會輸出任何內容:env/local-testing.sh:22: BUILD_DATE: parameter not set.

是否有替代執行set +uset -u再次圍繞此條件的替代方法?

如果您正在執行set -u並且有一個可能未設置的變數,並且您需要通過測試來測試它是否為空-z,那麼您可以使用

if [ -z "${BUILD_DATE:-}" ]; then

如果變數為空或未設置,"${BUILD_DATE:-}"則將擴展為空字元串。BUILD_DATE

使用預設的空值:

if [ -z "${BUILD_DATE-}" ]; then

請參閱中的參數擴展man bash使用 just-表示未設置變數時使用空值。

引用自:https://unix.stackexchange.com/questions/583064