カスタム機能によるスクリプトのロード

カスタム機能によるスクリプトのロード

私が呼び出すスクリプトを介してスクリプトをロードしたいと思いますloader.sh

#### Loader.sh
uload() {
    # ...
    if ! is_loaded $file
    then
        . "${file}" || exit 3

        if [[ ! -z "${callback}" ]]
        then
            "${callback}"
        fi
    fi
}

### log.sh
declare -r WARN=3

warn() {
    echo "${WARN}: $@" >&2
}

ユースケース:

. "${loader.sh}"

uload "log.sh"

warn 'test'

これにより、次のエラーが発生します。

WARN: unbound variable

このエラーが発生するのはなぜですか?

ベストアンサー1

2つの症状が一緒に現れる場合は次のとおりです。

  • オプションが設定されています-u。設定されていない変数のため、次のエラーが発生します。unbound variable
  • 変数はWARNまだ設定されていません。

この状況を確認または除外するには、次の手順を実行します。

  • フラグが設定されてecho $-いることを確認するu
  • echo "$WARN"手動で設定されていることを確認するか、xオプションを使用してデバッグできるかどうかを試してください。

おすすめ記事