GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich unter Linux den Inhalt einer Datei als Parameter an eine ausführbare Datei übergeben?

Das sollte funktionieren:

./program `cat file`

Wenn Sie den gesamten Dateiinhalt in einem einzigen Argument haben möchten, fügen Sie doppelte Anführungszeichen hinzu (getestet in Bash. Ich denke, es kann von Shell zu Shell variieren):

./program "`cat file`" 

Befehl

./program "$(< file)"

Erklärung

  1. $(cmd) führt einen Befehl aus und wandelt seine Ausgabe in einen String um. $(cmd) kann auch mit Backticks als `cmd` geschrieben werden . Ich bevorzuge das neuere $(cmd) da es sich besser verschachtelt als die Backticks der alten Schule.

  2. Der gewünschte Befehl ist cat file . Und dann von der Bash-Manpage:

    Die Befehlsersetzung $(cat file) kann durch das äquivalente, aber schnellere $(< file) ersetzt werden .

  3. Die Anführungszeichen darum herum stellen sicher, dass Leerzeichen erhalten bleiben, nur für den Fall, dass Sie Leerzeichen oder Zeilenumbrüche in Ihrer Datei haben. Das korrekte Zitieren von Dingen in Shell-Skripten ist eine Fähigkeit, die schmerzlich fehlt. Variablen und Befehlsersetzungen in Anführungszeichen zu setzen, ist eine gute Angewohnheit, damit Sie später nicht gebissen werden, wenn Ihre Dateinamen oder Variablenwerte Leerzeichen oder Steuerzeichen oder andere Seltsamkeiten enthalten.


Sie können einen der folgenden verwenden:

./program $(cat file)
./program "$(cat file)"

Letzteres ist nützlich, wenn die Datei möglicherweise mehrere Wörter enthält und Sie möchten, dass sie als einzelnes Argument behandelt werden. Auf jeden Fall bevorzuge ich die Verwendung von if $() zu Backticks, einfach weil es verschachtelt werden kann (was wahrscheinlich keine Voraussetzung ist). in diesem Fall).

Denken Sie auch daran, dass diese Antwort (und andere) eher mit der verwendeten Shell als mit Linux selbst zusammenhängen. Da das vorherrschende Shell scheint bash zu sein , ich habe speziell dafür codiert.

Dies ist tatsächlich eine ziemlich übliche Art, Prozesse unter UNIX-Lookalikes zu beenden. Ein Daemon (wie cron ) schreibt seine Prozess-ID in eine Datei (wie /var/cron.pid ) und Sie können es mit etwas wie:

signalisieren
kill -HUP $(cat /var/cron.pid)

Linux
  1. So verwenden Sie den Tar-Befehl unter Linux

  2. So extrahieren Sie die tar.gz-Datei in Linux mithilfe der Befehlszeile

  3. Wie übergebe ich den Inhalt einer Datei als Befehlszeilenparameter?

  4. Wie kann ich alle Dateien bearbeiten, die von find in vi in ​​Linux zurückgegeben werden?

  5. Wie kann ich Inhalte anstelle des Dateinamens mit dem Linux-Suchbefehl drucken?

So erweitern Sie den Auslagerungsbereich mithilfe der Auslagerungsdatei in Linux

Wie man eine Datei unter Linux ausführbar macht

So überwachen Sie Dateiänderungen mit fswatch unter Linux

So listen Sie den Inhalt eines Pakets in Linux auf

So zeigen Sie den Inhalt eines Archivs oder einer komprimierten Datei unter Linux an

So löschen Sie eine Festplatte und Datei sicher mit dem Linux-Befehl shred