Dato un file "foo.txt"
, creato da:subshell IO reindirizzamento
$ seq 1 10 > "foo.txt"
Sto cercando di leggere sia la prima e l'ultima riga del file, e ho iniziato reindirizzando il file in una subshell, in modo che l'elenco dei comandi consumerà il file in sequenza - ogni comando consuma l'input dal punto l'ultimo comando ha lasciato, suppongo:
$ (head -1; tail -1) < "foo.txt"
1
10
Tuttavia, se provo lo stesso con un temporanea descrittore di file, l'uscita non è la stessa:
$ (head -1; tail -1) < <(seq 1 10)
1
Domande:
Non sono sicuro di quello di nominare
<(seq 1 10)
, ma qual è la differenza tra questo temporanea descrittore di file e regolare uno ("foo.txt"
), che fa sì che l'esecuzione di subshell si comporti in modo diverso?Come posso ottenere lo stesso comportamento di reindirizzare un
"foo.txt"
alla subshell, ma senza un file temporanei - senza in realtà la creazione di un file.
+1 per una spiegazione molto buona. Tuttavia, l'OP chiede se è possibile ottenere tale comportamento senza alcun file temporaneo. È? I miei test non hanno avuto successo. – fedorqui
Sostituendo 'head' con riga di lettura' sh -c ", echo" $ line "'', il comportamento desiderato può essere realizzato senza un file temporaneo –
+1 Questa è la spiegazione esatta che stavo cercando!Visto che hai parlato di creare le tue cose, ho pensato di scrivere una mia shell con un paio di amici; stiamo pensando a una shell in qualche modo funzionale, con pattern matching e tutti i trickster più fantastici (: – Rubens