Comment faire pour obtenir une sortie d'une commande bash dans une variable

J'ai suivi à travers certaines des questions similaires (tels que Comment définir une variable à la sortie d'une commande Bash?), cependant les réponses acceptées semblent être non-travail pour moi. Je n'étais pas sûr si je dois faire dérailler quelqu'un d'autre question ou poster mon propre copie, alors, toutes mes excuses si j'ai choisi de mal ici.

Je souhaite obtenir la sortie et code de sortie d'un un certain nombre de commandes dans un script que je suis en train de monter ensemble. Voici un exemple de ce que j'ai été en utilisant:

cmd_output=$(rm $file)
exit_status=$?
if [ "${exit_status}" -eq 0 ]
then
log "Successfully removed the original" ${TAB_LEVEL}
else
fail "Failed to remove the original, the output was: \n ${cmd_output}"
fi

Le journal et ne parviennent pas les fonctions sont:

# Usage: fail "Failure message"
function fail {
echo "FATAL ERROR: $1" >> "${LOG_DIR}/${LOG_FILE}"
exit 1
}

# Usage: log "Log message" 3    Where the tab-level is 3.
function log {
if (("" > 0))
then
eval "printf '    %.0s' {1..$2}" >> "${LOG_DIR}/${LOG_FILE}"
fi
echo "$1" >> "${LOG_DIR}/${LOG_FILE}"
return 0
}

Dans l'exemple ci-dessus, je utiliser le $(cmd), mais j'ai aussi essayé d'utiliser les backticks.

Dans mon fichier journal, tout ce que je vois quand il ya un défaut est:

ERREUR FATALE: impossible de supprimer l'original, la sortie est: \n

Également, la sortie de l'échec de commandes se termine sur l'écran comme à son habitude. Est-il une raison pour laquelle mon cmd_output variables serait reste vide?

OriginalL'auteur Chris O'Kelly | 2012-10-05