GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzo le righe di un file come argomenti di un comando?

command `< file`

passerà il contenuto del file al comando su stdin, ma eliminerà le nuove righe, il che significa che non è possibile scorrere singolarmente ogni riga. Per questo puoi scrivere uno script con un ciclo 'for':

for line in `cat input_file`; do some_command "$line"; done

Oppure (la variante multilinea):

for line in `cat input_file`
do
    some_command "$line"
done

Oppure (variante multilinea con $() invece di `` ):

for line in $(cat input_file)
do
    some_command "$line"
done

Riferimenti:

  1. Sintassi del ciclo For:https://www.cyberciti.biz/faq/bash-for-loop/

Come già accennato, puoi usare i backtick o $(cat filename) .

Ciò che non è stato menzionato, e penso sia importante notare, è che devi ricordare che la shell spezzerà il contenuto di quel file in base agli spazi bianchi, dando ogni "parola" che trova al tuo comando come argomento. E mentre potresti essere in grado di racchiudere un argomento della riga di comando tra virgolette in modo che possa contenere spazi bianchi, sequenze di escape, ecc., la lettura dal file non farà la stessa cosa. Ad esempio, se il tuo file contiene:

a "b c" d

gli argomenti che otterrai sono:

a
"b
c"
d

Se vuoi estrarre ogni riga come argomento, usa il costrutto while/read/do:

while read i ; do command_name $i ; done < filename

Puoi farlo usando i backtick:

echo World > file.txt
echo Hello `cat file.txt`

Se la tua shell è bash (tra le altre), una scorciatoia per $(cat afile) è $(< afile) , quindi dovresti scrivere:

mycommand "$(< file.txt)"

Documentato nella pagina man di bash nella sezione 'Sostituzione dei comandi'.

In alternativa, fai leggere il tuo comando da stdin, quindi:mycommand < file.txt


Linux
  1. Come usare il comando Linux grep

  2. Come usare il comando cronologia in Linux

  3. Come utilizzare il comando Tar in Linux

  4. Come utilizzare il comando basename?

  5. Come usare sed per rimuovere le ultime n righe di un file

Come utilizzare il comando head di Linux

Come usare il comando diff di Linux

Come utilizzare il comando Ping di Linux

Come usare Sudo e il file Sudoers

Come utilizzare il comando uniq per elaborare gli elenchi in Linux

Come utilizzare il comando Gzip in Linux?