Jest tu kilka różnych odniesień do „danych wejściowych”, dlatego przedstawię kilka scenariuszy, mając na uwadze przede wszystkim ich zrozumienie. Aby uzyskać szybką odpowiedź na pytanie w najkrótszej formie :
stat testfile < <($1)> outputfile
Powyższe wykona statystyki na pliku testowym, weź (przekieruje) to STDOUT i uwzględni to w następnej funkcji specjalnej (część <()), a następnie wyśle ostateczne wyniki tego, co było, do nowego pliku (plik wyjściowy). Plik jest wywoływany, a następnie odwoływany do wbudowanych bash (1 $ za każdym razem, dopóki nie zaczniesz nowego zestawu instrukcji).
Twoje pytanie jest świetne i istnieje kilka odpowiedzi i sposobów na zrobienie tego, ale tak naprawdę zmienia się w zależności od tego, co robisz.
Na przykład możesz to również zapętlić, co jest dość przydatne. Typowym zastosowaniem tego jest w myśleniu psuedo-code:
run program < <($output_from_program)> my_own.log
Biorąc to i poszerzając tę wiedzę, możesz tworzyć takie rzeczy jak:
ls -A; (while read line; do printf "\e[1;31mFound a file\e[0m: $line\n"; done) < <(/bin/grep thatword * | /usr/bin/tee -a files_that_matched_thatword)
Spowoduje to wykonanie prostej operacji ls -A w bieżącym katalogu, a następnie przekazanie instrukcji pętli do każdego wyniku od ls -A do (i tutaj jest to trudne!) Grep "to słowo" w każdym z tych wyników i wykonanie tylko poprzedniego printf (na czerwono), jeśli rzeczywiście znalazł plik z „tym słowem”. Loguje również wyniki grep do nowego pliku tekstowego files_that_matched_thatword.
Przykładowe dane wyjściowe:
ls -A; (while read line; do printf "\e[1;31mFound a file\e[0m: $line\n"; done) < <(/bin/grep thatword * | /usr/bin/tee -a files_that_matched_thatword)
index.html
Wszystko to po prostu wydrukowało wynik ls-A, nic specjalnego. Dodaj coś, aby tym razem grep:
echo "thatword" >> newfile
Teraz uruchom ponownie:
ls -A; (while read line; do printf "\e[1;31mFound a file\e[0m: $line\n"; done) < <(/bin/grep thatword * | /usr/bin/tee -a files_that_matched_thatword)
files_that_matched_thatword index.html newfile
Found a file: newfile:thatword
Chociaż być może jest to bardziej wyczerpująca odpowiedź, niż szukasz obecnie, uważam, że trzymanie takich przydatnych notatek przyniesie ci więcej korzyści w przyszłych przedsięwzięciach.
<
(dane wejściowe z pliku do lewej strony) lub|
(dane wejściowe ze strumienia do prawej strony). Jest różnica.