Re: Question script Bash

Top Page

Reply to this message
Author: Vincent Riquer
Date:  
To: guilde
Subject: Re: Question script Bash
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