gpt4 book ai didi

linux - 将 stderr 重定向到错误处理程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:50:21 24 4
gpt4 key购买 nike

是否可以将 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.

最佳答案

您可以将cp命令的标准错误重定向到errhand,如果没有文本可输出,它可以简单地返回。

errhand () {
read errormsg
[[ -z $errormsg ]] && return
{ echo "an error occurred"
echo "$IN"
} | tee -a log.txt
}

cp "$1" "$2" 2> >(errhand)

关于linux - 将 stderr 重定向到错误处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32172473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com