On 27/06/2011 15:51, Yves Martin wrote:
> Bonjour,
>
> Je découvre avec horreur en écrivant mes scripts que ce type d'écriture
> /usr/sbin/useradd --system --uid 600 --gid 600 2>&1 | tee -a $LOG
> m'empêche d'obtenir la valeur $? de la commande "useradd".
> J'obtiens visiblement celle de "tee" et cela m'intéresse moyennement.
>
> Evidemment
> /usr/sbin/useradd --system --uid 600 --gid 600 2>&1>> $LOG
> fonctionne bien mais il manque un petit quelque-chose dans la console
>
> Que me conseillez-vous ?
Puisque tu es en bash, tu peux faire une process substitution. Si tu
dois rester compatible POSIX par contre il vaut mieux pas.
http://wiki.bash-hackers.org/syntax/expansion/proc_subst
La prcess substitution de permet de lancer tee dans un sous-shell, et $?
contiendra le retour de useradd :
$ ( echo 'bla' ; false ) > >(tee -a test)
bla
$ echo $?
1
$ cat test
bla
bla
bla
bla