Étrange retour de la valeur “134” pour appeler à s'émerveiller en script bash
J'ai rencontré un très très étrange problème lors de l'utilisation de gawk dans le script bash.
dans ce script, j'utilise une fonction pour faire certains de traitement de texte. Encore un très simple gawk commande renvoie l'erreur 134
#!/bin/bash
testFunc()
{
log "Before gawk: $?"
gawk '{print}' file
log "After gawk: $?"
}
Si j'ai lancer le script manuellement dans la console, il fonctionne parfaitement, $?
sera toujours 0, ce qui signifie succès, mais si j'utilise ce script sous Linux script de démarrage dans/etc /rc.d/pour le niveau 3, après gawk est exécuté, le $?
est toujours 134
, je ne sais pas quel est le sens de l'134.
si je remplace gawk '{print}' file
à gawk --version
, le résultat est ok, $? est 0.
- Cela impliquerait que la commande précédente ne s'est pas exécuté avec succès.
- Non, si je remplace le "gawk '{print}' fichier" à "rester bouche bée --version", le résultat est ok, $? est 0
- Quel est le contenu de
file
? - le contenu du fichier est comme ci-dessous: abc,1,2[nouvelle ligne] def,3,4
Vous devez vous connecter pour publier un commentaire.
Code de sortie 134 signifie que votre programme a été interrompue (reçu SIGABRT), peut-être en raison d'un échec d'assertion.
(Comme @hobbs a expliqué dans le commentaire ci-dessous vous soustrayez 128 du code de sortie de la carte à SIGABRT dans la liste.)
Vous pouvez avoir besoin de donner le chemin complet de la commande
log
et chemin d'accès complet defile
Ici est sigal liste par la commande
kill
SIGABRT
.You may need give the full path of command log and full path of file