Shell et interprétation de commande
Bonjour,
Je suis en train de coder un script qui prend en paramètres des commandes à exécuter (espacées par des /n), du style maFonction echo banane /n echo tutu, et ça stocke stdout et stderr dans une variable.
Voilà le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
#!/bin/sh
maFonction()
{
CMD=""
REPONSE=""
while [ "$1" != "" ]
do
if [ "$1" = "/n" ]
then
REPONSE="$REPONSE $($CMD 2>&1)"
CMD=""
shift 1
else
CMD="$CMD $1"
shift 1
fi
done
REPONSE="$REPONSE $($CMD 2>&1) ^Z"
}
maFonction "echo" "banane" |
Ceci marche très bien pour des exemples comme celui cité plus haut. Cependant, pour les commandes utilisant les pipes ou les redirection, ça ne veut pas interpréter !
Ex : maFonction "echo" "banane" ">" "foo"
maFonction "echo" "3:A" "|" "cut -d: -f1"
En faisant ça, $REPONSE contient : "banane > foo" et "3:A | cut -d: -f1" ... pourquoi les > et | ne sont pas interprétés ???