是否可以将stderr消息传递给错误处理函数并让它决定如何处理消息? 一个简单的例子是如果一个脚本,如果用户给foo.bar不存在的文件复制或只给它一个输入参数。我不想立即打印系统错误消息,而是先打印一些附加信息。也可以将它发送到log.txt。
这是我到目前为止所想到的,但它似乎不起作用。
#foo.bar
function errhand
{
read IN #read stdout which has stderr redirected.
echo "an error occurred while copying." | tee -a log.txt
echo $IN | tee -a log.txt
}
cp $1 $2 || errhand 2>&1 #redirect stder to stdout if error occurs.
答案 0 :(得分:1)
您可以将cp
命令的标准错误重定向到errhand
,如果没有要输出的文本,则可以返回。
errhand () {
read errormsg
[[ -z $errormsg ]] && return
{ echo "an error occurred"
echo "$IN"
} | tee -a log.txt
}
cp "$1" "$2" 2> >(errhand)