pourquoi la fonction de script shell suivante échoue?

0
_exec()
{
    CMD="$1"
    echo "Executing command: $CMD"
    EXEC_OUT=`$CMD`
    EXEC_RET=$?
}
_exec  "hostname|cut  -d\".\" -f1 "
SHORT_NAME=$EXEC_OUT
if [ $EXEC_RET -ne 0 ];then
    echo "Unable to determine shortname of server"
else
    echo $EXEC_OUT
fi
Niraj
la source
1
Bienvenue sur SuperUser. Quelle est l'erreur que vous obtenez? Comment appelez-vous la fonction? Qu'as-tu déjà essayé?
mardi
ce sont mes résultats de débogage?
Niraj
+ _exec 'hostname | cut -d "." -f1 '+ CMD =' nom_hôte | couper -d "." -f1 '+ echo' Commande en cours d'exécution: nom_hôte | cut -d "." -f1 'Commande en cours d'exécution: nom_hôte | cut -d "." -f1 ++ 'hostname | cut' '-d "."' -f1 te.sh: ligne 5: hostname | cut: commande introuvable + EXEC_OUT = + EXEC_RET = 127 + SHORT_NAME = + '[' 127 --ne 0 ']' + echo 'Impossible de déterminer le nom abrégé du serveur' Impossible de déterminer le nom abrégé de serve
Niraj
quand la fonction met $ CMD à exécuter, elle met 'hostname | cut' '-d "."' -f1 te.sh
Niraj
Je vous suggère d’afficher ces réponses dans votre question initiale et de lire la section d’aide sur le formatage.
mardi

Réponses:

0

Vous devez évaluer votre cmd sur votre fonction exec.

EXEC_OUT=`eval $CMD`

Pas sûr de savoir pourquoi. Je pense que c'est parce qu'il y a plusieurs commandes dans une seule variable. Peut-être que quelqu'un de plus expérimenté peut le confirmer.

Voir la page de manuel eval .

mug
la source