crash shell:检查命令是否成功执行的任何方法

crash shell:检查命令是否成功执行的任何方法

我正在使用崩溃包自动化测试。是否有类似的东西$?,可以用来检查前一个命令是否在崩溃 shell 内成功执行?

例如,当命令:

crash> bt -a

执行了,如何知道执行成功与否?我心中唯一的解决方案是对结果进行grep,但当环境发生变化时,它并不可靠。

这就是我尝试时得到的结果echo $?

crash> bt asd
bt: invalid task or pid value: asd
crash> $?
crash: command not found: $?
crash> echo $?
0
crash>
crash> q
root@at0012-ubuntu:~/crashKernel# 

$?总是显示为 0。

几天前我已经向超级用户提出了这个问题,但没有得到任何帮助。任何帮助,将不胜感激。

答案1

正如 @Anthon 所暗示的,这不是像 Bash 或 Dash 这样的“正常”*nix shell,而是特定于应用程序的提示(q不是POSIX 内置实用程序例如)。从快速浏览来看man crash看起来没有命令可以获取最后一个命令的退出代码。

答案2

抱歉——我误解了原来的问题。

答案是否定的,没有办法判断崩溃实用程序命令是否已成功完成。被调用来执行命令的函数都是 void 函数,例如,“bt”命令的声明如下:

无效 cmd_bt(无效) { ... }

答案3

正如 @l0b0 已经澄清的那样,这不是一个normalshell。除此之外,它似乎没有echo作为您可以在提示符下键入的命令。比较:

crash -h bt

crash -h echo

0如果您按照提示尝试,可能会得到相同的结果crash>

spam ?0

答案4

崩溃实用程序的“bt”命令为您提供给定任务最后一次进入内核模式的堆栈回溯,无论是通过系统调用还是异常。它没有关于不再存在的任务(即先前由 bash shell 执行的任务)的状态的概念。

相关内容