tisdag, juni 09, 2015

for loop i bash

Ibland behöver man kunna loopa igenom en lista, fil eller output och köra ett kommando för varje rad. Då kan man använda en for loop i bash.
Denna one-linern, eller varianter av den använder jag en hel del i min vardag.


Exempel; Lista innehållet i en fil med URL:ar till och kör kommandot 'wget' för alla rader.



 for i in `cat links.txt `; do wget $i ; done


Vad exemplet gör är att med 'cat' printa ut samtliga rader i filen links.txt. Varje rad sparas och används i variabeln $i som i detta fallet hämtas med 'wget'.
Observera att man kapslar in `cat links.txt` med accent-fnuttar för att output:en från det kommandot ska behandlas.
(det går alltså inte att använda ' ' )




Har du själv någon behändig one-liner du brukar använda dig av?