我正在运行的脚本遇到一些麻烦。当脚本成功时,我无法获得重定向的输出。我需要将它传递给/ dev / null,因为我真的不关心它。
if ! p4 -p 1667 -c prefetch -Zproxyload sync //bob/...; then
printf "\nFailed to Sync //bob \n\n" &> $OUTPUT_LOG
else &>/dev/null
fi
我做错了什么?
答案 0 :(得分:3)
在运行命令之前,必须先确定要对输出执行的操作。如果您希望保存的输出在出现问题时保留在日志文件中,但在没有问题时丢弃它,则需要保存输出,确定是否存在问题,然后处理它
保存输出(标准输出和标准错误)意味着将其放在文件或变量中。这里,变量可能是合适的。
output=$(p4 -p 1667 -c prefetch -Zproxyload sync //bob/... 2>&1)
if [ $? != 0 ]
then
{
echo "$output"
printf "\nFailed to Sync //bob\n\n"
} > $OUTPUT_LOG
fi
使用文件的替代方案可能会更好,如果输出可能非常丰富,但确保文件正确命名(请参阅mktemp
)并且要复杂得多以确保更复杂即使脚本被中断,文件也会被正确删除(参见trap
)。