BashBash 檢查是否在使用
Bash 檢查是否在使用set -u
時使用-z 設置了變數?
#!/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 +u
並set -u
再次圍繞此條件的替代方法?
如果您正在執行
set -u
並且有一個可能未設置的變數,並且您需要通過測試來測試它是否為空-z
,那麼您可以使用if [ -z "${BUILD_DATE:-}" ]; then
如果變數為空或未設置,
"${BUILD_DATE:-}"
則將擴展為空字元串。BUILD_DATE
使用預設的空值:
if [ -z "${BUILD_DATE-}" ]; then
請參閱中的參數擴展。
man bash
使用 just-
表示未設置變數時使用空值。