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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ???