当来自脚本的 运行 时,zsh 不显示失败的 C 可执行文件的 signal/error 名称

zsh doesn't show signal/error name for a failed C executable when run from a script

我刚刚发现我的 zsh 在出现 运行time 错误时不会提醒我。 谁能帮帮我?

int main(void) {
    int a = 1;
    int b = 0;
    int c = a/b;
    return 0;
}

我编译了它并写了一个脚本给运行它,

./a.out

然后我输入了zsh a.sh。它完成没有任何错误。

但是当我用命令行 运行 它时 ./a.out 它显示: zsh: floating point exception ./a.out

我使用的是 MacOS Monterey 12.2.1,我的 zsh 是 zsh 5.8 (x86_64-apple-darwin21.0)

非常感谢!

我现在明白交互式和非交互式 shell 有许多不同的行为,但我仍然不知道 zsh 是否有办法告诉我错误。 (尤其是当脚本在 .zshrc 中时)错误消息很重要。

您看到的错误消息特定于交互式 shell,它检测到您的程序退出并出现 floating-point 异常并报告它。不清楚如何使non-interactive shell 类似地报告错误,但最好自己error-checking 这样做。例如,

./a.out
case $? in
  0) print "Success" ;;
  *) print "Error: $?" ;;
esac