我运行的脚本有点问题。当脚本成功时,我无法重定向输出。我只需要把它传给/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
)。