Ci sono alcuni riferimenti diversi a "input" qui, quindi fornirò alcuni scenari con la comprensione prima in mente. Per la tua rapida risposta alla domanda nella forma più breve :
stat testfile < <($1)> outputfile
Quanto sopra eseguirà una stat sul file di test, prenderà (reindirizzamento) è STDOUT e lo includerà nella successiva funzione speciale (la parte <()), quindi produrrà i risultati finali di qualunque cosa fosse, in un nuovo file (file di output). Il file viene chiamato, quindi referenziato con built-in bash ($ 1 ogni volta dopo, fino a quando non si inizia un nuovo set di istruzioni).
La tua domanda è fantastica e ci sono diverse risposte e modi per farlo, ma cambia davvero con quello che stai facendo in modo specifico.
Ad esempio, puoi anche eseguire il loop, il che è abbastanza utile. Un uso comune di questo è, nella mentalità psuedo-code, è:
run program < <($output_from_program)> my_own.log
Comprenderlo e ampliare tale conoscenza ti consente di creare cose come:
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)
Questo eseguirà un semplice ls -A sulla tua directory corrente, quindi dirai mentre per scorrere ogni risultato da ls -A a (ed ecco dove è complicato!) Grep "thatword" in ciascuno di questi risultati, ed eseguirà solo il precedente printf (in rosso) se in realtà ha trovato un file con "thatword" al suo interno. Registrerà anche i risultati di grep in un nuovo file di testo, files_that_matched_thatword.
Esempio di output:
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
Tutto ciò ha semplicemente stampato l's-Un risultato, niente di speciale. Aggiungi qualcosa per farlo grep questa volta:
echo "thatword" >> newfile
Ora rieseguilo:
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
Anche se forse una risposta più estenuante di quella che stai cercando al momento, credo che tenere a portata di mano appunti come questo in giro ti gioverà molto di più nelle attività future.
<
(input dal file sul lato sinistro) o|
(input dal flusso al lato destro). C'è una differenza