web-dev-qa-db-ja.com

この「あいまいなリダイレクト」を解決する方法

関数を含むスクリプトがあります。

function install_log() {
    echo "$1" >> $INSTALL_LOG_OUTPUT 2>&1
}

この機能は正常に機能しています。ログファイルに何かを書き込む機能です。

スクリプトの特定のパラメーターを読み取るために、他のいくつかのコマンドをスクリプトに追加しました。

AUTOMATIC_INSTALL=

for argument in "$@"
do
    install_log "-> parameter $argument"
    if [ "$argument" == "--automatic" ] || ["$argument" == "-automatic" ]; then
        AUTOMATIC_INSTALL=True
    fi
done
install_log "# AUTOMATIC_INSTALL: $AUTOMATIC_INSTALL"

しかし、新しい行では、不要なメッセージがいくつか表示されます。

$INSTALL_LOG_OUTPUT: ambiguous redirect

私はこれが2つの線から来ていることを知りました

install_log "-> parameter $argument"
# ...
install_log "# AUTOMATIC_INSTALL: $AUTOMATIC_INSTALL"

メッセージが発生している理由を誰かが知っていますか。

2
devopsfun

次のように、関数のINSTALL_LOG_OUTPUTを引用符で囲みます。

function install_log() {
    echo "$1" >> "$INSTALL_LOG_OUTPUT" 2>&1
}

スクリプトを再度実行すると、おそらくINSTALL_LOG_OUTPUTが空であることを示すエラーメッセージと、次のようなメッセージが表示されます:bash: : No such file or directory

4
Kira