62 votes

Comment utiliser la commande read dans Bash ?

Lorsque j'essaie d'utiliser la commande read dans Bash comme ceci :

 echo hello | read str
echo $str

Rien n'a fait écho, alors que je pense que str devrait contenir la chaîne hello . Quelqu'un peut-il m'aider à comprendre ce comportement s'il vous plaît?

42voto

glenn jackman Points 69748

Autres alternatives bash qui n'impliquent pas de sous-shell :

 read str <<END             # here-doc
hello
END

read str <<< "hello"       # here-string

read str < <(echo hello)   # process substitution

8voto

Shizzmo Points 4695

L'utilisation typique pourrait ressembler à :

 i=0
echo -e "hello1\nhello2\nhello3" | while read str ; do
    echo "$((++i)): $str"
done

et sortie

 1: hello1
2: hello2
3: hello3

3voto

l0b0 Points 10719

La valeur disparaît car la commande read est exécutée dans un sous-shell séparé : Bash FAQ 24

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X