奇怪的返回值"134"在bash脚本中调用gawk

mai*_*yok 5 linux bash awk

在bash脚本中使用gawk时遇到了一个非常奇怪的问题.

在这个脚本中,我使用一个函数来做一些文本处理.即使是非常简单的gawk命令也会返回错误134

 #!/bin/bash

 testFunc()
 {
   log "Before gawk: $?"
   gawk '{print}' file
   log "After gawk: $?"
 }
Run Code Online (Sandbox Code Playgroud)

如果我手动运行控制台这个脚本,它会很好地工作,$?将始终为0,这意味着成功,但如果我用这个脚本是Linux的等启动脚本/ rc.d中/ 3的水平,执行GAWK之后,$?是总是134,我不知道134的含义是什么.

如果我更换gawk '{print}' filegawk --version,结果是正常,$?是0.

BMW*_*BMW 21

退出代码134表示您的程序已中止(收到SIGABRT),可能是由于断言失败.

(正如@hobbs在下面的评论中解释的那样,你从退出代码中减去128以映射到列表中的SIGABRT.)你可能需要提供命令的log完整路径和完整路径file

这是sigal list by命令 kill

kill -l

 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
 5) SIGTRAP      6) SIGABRT      7) SIGEMT       8) SIGFPE
 9) SIGKILL     10) SIGBUS      11) SIGSEGV     12) SIGSYS
13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGUSR1
17) SIGUSR2     18) SIGCHLD     19) SIGPWR      20) SIGWINCH
21) SIGURG      22) SIGIO       23) SIGSTOP     24) SIGTSTP
25) SIGCONT     26) SIGTTIN     27) SIGTTOU     28) SIGVTALRM
29) SIGPROF     30) SIGXCPU     31) SIGXFSZ     32) SIGWAITING
33) SIGLWP      34) SIGFREEZE   35) SIGTHAW     36) SIGCANCEL
37) SIGLOST     38) SIGXRES     41) SIGRTMIN    42) SIGRTMIN+1
43) SIGRTMIN+2  44) SIGRTMIN+3  45) SIGRTMAX-3  46) SIGRTMAX-2
47) SIGRTMAX-1  48) SIGRTMAX
Run Code Online (Sandbox Code Playgroud)

  • 对于那些好奇的人,状态代码是128加上被捕获的信号.134-128 = 6.信号6是"SIGABRT". (12认同)