一种指定在前一个失败时运行的命令的方法

问题描述 投票:0回答:2

是否有可能从CLI捕获错误(unknown command),并在出现错误的情况下执行某些操作?

更确切地说,我搜索一种方法来做这样的事情:

if [ previousCommandFails ] ; then
  echo lastCommand >> somewhere.txt
fi

Echo只是一个例子,说我需要访问这个lastCommand。

我希望它是我的计算机中的默认行为,因此代码必须放在像~/.bashrc这样的地方。

linux bash terminal gnome-terminal
2个回答
1
投票

您可以尝试以下解决方案。我不保证这是一个很好的解决方案,但它可能有助于你的情况。

创建一个小脚本,可以测试上一个命令,即test.sh的内容:

if [ $? -ne 0 ] then history 1 >> /path/to/failed_commands.txt fi

然后设置此变量:

PROMPT_COMMAND+="source /path/to/test.sh"

PROMPT_COMMAND如果设置,则在发出每个主要提示之前将该值作为命令执行。


0
投票

这取决于你所说的失败。如果它只是返回非0值,我担心你必须在每个命令后明确地测试它,或者使用专门的shell(*)。

但是当接收到信号时,trap可用于执行特定命令:

trap action signal

如果这还不够,你将不得不获得一个shell(posix shell或bash)的源代码并调整它以满足你的需求......

© www.soinside.com 2019 - 2024. All rights reserved.