GNU/Linux >> Linux Esercitazione >  >> Linux

usando Linux come posso passare il contenuto di un file come parametro a un eseguibile?

Questo dovrebbe risolvere il problema:

./program `cat file`

Se vuoi l'intero contenuto del file in un singolo argomento, aggiungi le doppie virgolette (testato in bash. Penso che possa variare da shell a shell):

./program "`cat file`" 

Comando

./program "$(< file)"

Spiegazione

  1. $(cmd) esegue un comando e converte il suo output in una stringa. $(cmd) può anche essere scritto con apici inversi come `cmd` . Preferisco il più recente $(cmd) poiché nidifica meglio dei backtick della vecchia scuola.

  2. Il comando che vogliamo è cat file . E poi dalla pagina man di bash:

    La sostituzione del comando $(cat file) può essere sostituito dall'equivalente ma più veloce $(< file) .

  3. Le virgolette attorno ad esso assicurano che gli spazi bianchi siano preservati, nel caso in cui ci siano spazi o nuove righe all'interno del file. Citare correttamente le cose negli script di shell è un'abilità che manca gravemente. Citare le variabili e le sostituzioni dei comandi è una buona abitudine da prendere in modo da non essere morso più tardi quando i nomi dei file o i valori delle variabili hanno spazi o caratteri di controllo o altre stranezze.


Puoi usare uno di:

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

Quest'ultimo è utile se ci possono essere più parole nel file e vuoi che vengano trattate come un singolo argomento. In ogni caso, preferisco usare if $() ai backtick semplicemente per la sua capacità di nidificare (che probabilmente non è un requisito in questo caso).

Tieni inoltre presente che questa risposta (e altre) sono più correlate alla shell in uso piuttosto che a Linux stesso. Dal momento che il predominante shell sembra essere bash , ho codificato appositamente per questo.

Questo è in realtà un modo abbastanza comune per uccidere i processi sotto i sosia di UNIX. Un demone (come cron ) scriverà il suo ID di processo in un file (come /var/cron.pid ) e puoi segnalarlo con qualcosa come:

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

Linux
  1. Come utilizzare il comando Tar in Linux

  2. Come estrarre il file tar.gz in Linux utilizzando la riga di comando

  3. Come passare il contenuto di un file come parametro della riga di comando?

  4. Linux + come consentire solo a un utente specifico di leggere il file

  5. Come posso stampare i contenuti invece del nome del file usando il comando linux find?

Come estendere lo spazio di scambio utilizzando il file di scambio in Linux

Come rendere eseguibile un file in Linux

Come monitorare le modifiche ai file utilizzando fswatch in Linux

Come elencare il contenuto di un pacchetto in Linux

Come visualizzare il contenuto di un archivio o di un file compresso in Linux

Come cancellare in modo sicuro un disco e un file utilizzando il comando shred di Linux