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 :
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 !
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"
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 ???
Partager