Strange return value "134" to call Gawk in a Bash script
awk, bash, linux
Solution
Exit code 134 means your program was aborted (received SIGABRT), perhaps as a result of a failed assertion.
(As @hobbs has explained in the comment below, you subtract 128 from the exit code to map to SIGABRT in list.) You may need give the full path of command `log` and full path of `file`.
Here is the signal list by command `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
Problem
I met a very very strange issue when using Gawk in a Bash script. In this script, I use a function to do some text processing. Even a very simple Gawk command will return error 134. ``` #!/bin/bash testFunc() { log "Before gawk: $?" gawk '{print}' file log "After gawk: $?" } ``` If I manually run this script in console, it will work perfectly. `$?` will always be 0 which means success, but if I use this script as a Linux startup script in etc/rc.d/ for level 3, after Gawk is executed, the `$?` is always `134`. What's the meaning of 134? If I replace `gawk '{print}' file` to `gawk --version`, the result is OK. $? is 0.