Die meiste Zeit, Befehl sub ordnung (entweder durch Backticks oder $(), wie andere hingewiesen haben) ist in Ordnung, aber hüte dich vor Shell Erweiterungsregeln. Denken Sie insbesondere daran, dass das Abwählen vor erfolgt und die Wortaufteilung nach Befehlsersetzung erfolgt. Diese
ist nicht so schlimm, wenn alle Argumente Worte sind, aber wenn Sie beginnen Leerzeichen oder andere Sonderzeichen setzen, die in Ihre Argumente zitierte würde normalerweise werden müssen, dann können Sie mit seltsamen Ergebnissen treffen (man beachte die abnormal Abstand und Zitate in der Ausgang):
$ echo "foo 'bar baz'" >a
$ echo $(cat a)
foo 'bar baz'
den ganzen Befehl subtitution zitiert ist keine Lösung, offensichtlich, wie sie Wort Spaltung verhindern würden (also Ihre ganze Inhalt der Datei erscheint stattdessen als ein langes Argument von vielen Optionen), und würde nichts über die Zitate tun.
$ echo "$(cat a)"
foo 'bar baz'
Eine Lösung, um dies ist die eval builtin zu verwenden:
$ eval echo "$(cat a)"
foo bar baz
N. B .: Echo kann nicht der beste Beispiel Befehl hier sein; Vielleicht möchten Sie durch etwas anderes ersetzen, z.die folgende Funktion:
$ f() { echo $#; }
gcc $ enthalten (cat filename.txt) '- Könnte Zitate brauchen. –