2017-03-13 1 views
1

Je veux obtenir le contenu de stdin dans une variable que si quelque chose a été pipped au script, le code que je utilise est:bêchage facultatif script shell

input=$(cat) 
echo "[email protected] $input" 

Faire echo 'something' | ./script fonctionne comme prévu, mais Le fait de ne rien arracher ne fait qu'attendre indéfiniment le script pour l'entrée. Comment ignorer stdin vide?

+0

Donc, pour résumer vos besoins? Vous voulez stocker le contenu de 'stdin' uniquement si votre script ne reçoit pas de pipe-line? – Inian

Répondre

0

Tester si quelque chose a été passé à stdin comme celui-ci avant d'essayer de définir une variable semble résoudre le problème:

if ! [ -t 0 ]; then 
    input=$(cat) 
fi