Bash:从刚刚捕获的错误中获取消息

Bash:从刚刚捕获的错误中获取消息,bash,signals,bash-trap,Bash,Signals,Bash Trap,Bash允许捕捉信号。有没有一种方法可以真正获取在某个特定信号之前打印的信息?我特别感兴趣的是ERR。我知道并不是所有的信号都与信息相关。只是想知道bash本身在引发错误时是否设置了变量或其他东西 示例代码: #!/bin/bash # Running bash 5.0 handler () { echo "Handling the error" exit 0 } trap handler ERR notacommand 上面的代码将打印: ./exa

Bash允许捕捉信号。有没有一种方法可以真正获取在某个特定信号之前打印的信息?我特别感兴趣的是
ERR
。我知道并不是所有的信号都与信息相关。只是想知道bash本身在引发错误时是否设置了变量或其他东西

示例代码:

#!/bin/bash
# Running bash 5.0

handler () {
    echo "Handling the error"
    exit 0
}

trap handler ERR

notacommand
上面的代码将打印:

./example.sh: line 11: notacommand: command not found
有没有办法在处理程序中查看此消息


编辑:我知道我可以将所有输出保存到一个文件中,然后在出现错误时读取该文件的尾部。这对我来说似乎有问题,因为写入文件的最后一条消息可能不是错误(特别是如果脚本中的任何子进程都是以
&
启动的)。我希望bash可以设置一个var或其他东西,就像它设置
$1
$?
$RANDOM
等一样。

将bash的stderr重定向到一个文件:

#!/bin/bash
# Running bash 5.0

log="error.txt"
exec 2>"$log"

handler () {
 echo "Handling this error: $(< "$log")"
 exit 0
}

trap "handler" ERR
trap "rm $log" EXIT

notacommand
#/bin/bash
#运行bash5.0
log=“error.txt”
exec 2>“$log”
处理程序(){
echo“处理此错误:$(<“$log”)”
出口0
}
陷阱“处理程序”错误
陷阱“rm$log”退出
notacommand
输出:

Handling this error: ./example.sh: line 15: notacommand: command not found 处理此错误:./example.sh:第15行:notacommand:找不到命令
谢谢你的回答,+1。我应该在我的问题中澄清。我希望有一种方法不需要将所有内容都保存到文件中,然后希望文件中的最后一个内容是消息。然而,似乎不存在这样的方法。