La maggior parte del tempo, comando secondario l'iterazione (tramite i backtick o $(), come altri hanno sottolineato) va bene, ma attenzione alle regole di espansione della shell . In particolare, tieni presente che lo smantellamento viene effettuato prima dello e la suddivisione in parole viene eseguita dopo la sostituzione del comando.
Questo non è troppo male se tutti i tuoi argomenti sono parole, ma se si iniziare a mettere spazi o altri caratteri speciali che normalmente bisogno di essere citato nei vostri argomenti, allora si può incontrare con risultati strani (notare l'anomala la spaziatura e citazioni in l'uscita):
$ echo "foo 'bar baz'" >a
$ echo $(cat a)
foo 'bar baz'
Citando l'intero comando di subtitution non è una soluzione, ovviamente, in quanto impedirebbe la suddivisione delle parole (da qui, il contenuto di tutta la vostra del file apparirebbe come un argomento a lungo, invece di molti opzioni) e non farebbe nulla per le virgolette.
$ echo "$(cat a)"
foo 'bar baz'
Una soluzione aggirare questo è di utilizzare la funzione interna eval:
$ eval echo "$(cat a)"
foo bar baz
NB .: eco non può essere la migliore comando esempio qui; potresti voler sostituire con qualcos'altro, ad es.la seguente funzione:
$ f() { echo $#; }
'gcc $ (filename.txt cat) '- Potrebbe avere bisogno di virgolette. –