如何解决这个“模糊重定向”

dev*_*fun 5 shell bash io-redirection

我有一个带有函数的脚本:

function install_log() {
    echo "$1" >> $INSTALL_LOG_OUTPUT 2>&1
}
Run Code Online (Sandbox Code Playgroud)

此功能正常工作。它是一种将某些内容写入日志文件的功能。

我在脚本中添加了一些其他命令,用于读取脚本的给定参数:

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"
Run Code Online (Sandbox Code Playgroud)

但是使用新行,我收到了一些不需要的消息:

$INSTALL_LOG_OUTPUT: ambiguous redirect
Run Code Online (Sandbox Code Playgroud)

我发现,这来自两行

install_log "-> parameter $argument"
# ...
install_log "# AUTOMATIC_INSTALL: $AUTOMATIC_INSTALL"
Run Code Online (Sandbox Code Playgroud)

有谁知道,为什么会出现这些消息。

Kir*_*ira 5

在您的函数中将 INSTALL_LOG_OUTPUT 引号括起来,如下所示:

function install_log() {
    echo "$1" >> "$INSTALL_LOG_OUTPUT" 2>&1
}
Run Code Online (Sandbox Code Playgroud)

再次运行脚本后,您可能会收到一条错误消息,指示 INSTALL_LOG_OUTPUT 为空,并带有以下类型的消息:bash: : No such file or directory