Este script aceita stdin e produz as duas saídas:
#!/bin/sh
echo "Unique rows:"
tee ~/tmpfile$$ | sort | uniq
echo "All Rows:"
cat ~/tmpfile$$
rm ~/tmpfile$$
Eu tenho o seguinte arquivo de entrada em.txt:
um
b
c
um
b
c
Eu tenho o seguinte script test.sh:
# display unique rows
while read line
do
echo $line
done < $(cat "$@" | sort | uniq)
# display all rows
while read line
do
echo $line
done < $(cat "$@")
Eu sei que posso executar o script usando:
sh test.sh in.txt
Eu também sei que posso executá-lo usando entrada padrão em vez de um arquivo. No entanto, isso só fornece entrada para o primeiro loop while. Como posso fornecer a entrada para ambos os loops sem digitar a entrada duas vezes?
Tags shell-script