重定向bash输出



我运行的脚本有点问题。当脚本成功时,我无法重定向输出。我只需要把它传给/dev/null,因为我真的不在乎它

if ! p4 -p 1667 -c prefetch -Zproxyload sync //bob/...; then
    printf "nFailed to Sync //bob nn" &> $OUTPUT_LOG
else &>/dev/null
fi

我做错了什么?

在生成输出之前——在运行命令之前,您必须决定要对输出执行什么操作。如果您希望在出现问题时将输出保留到日志文件中,但在没有问题时将其丢弃,则需要保存输出,确定是否存在问题,然后进行处理。

保存输出(标准输出和标准错误)意味着将其放入文件或变量中。在这里,一个变量可能是合适的。

output=$(p4 -p 1667 -c prefetch -Zproxyload sync //bob/...  2>&1)
if [ $? != 0 ]
then
    {
    echo "$output"
    printf "nFailed to Sync //bobnn"
    } > $OUTPUT_LOG
fi

如果输出非常丰富,那么使用文件的替代方法可能会更好,但确保文件的名称正确更为复杂(请参见mktemp),即使脚本中断,确保文件被正确删除也要复杂得多(请参阅trap)。

最新更新