≡ Menu

HowTo: Use bash For Loop In One Line

How do I use bash for loop in one line under UNIX or Linux operating systems?

The syntax is as follows to run for loop from the command prompt.

Run Command 5 Times

for i in {1..5}; do COMMAND-HERE; done

OR

 for((i=1;i<=10;i+=2)); do echo "Welcome $i times"; done

Work On Files

for i in *; do echo $i; done

OR

for i in /etc/*.conf; do cp $i /backup; done
Share this tutorial on:

Your support makes a big difference:
I have a small favor to ask. More people are reading the nixCraft. Many of you block advertising which is your right, and advertising revenues are not sufficient to cover my operating costs. So you can see why I need to ask for your help. The nixCraft, takes a lot of my time and hard work to produce. If you use nixCraft, who likes it, helps me with donations:
Become a Supporter →    Make a contribution via Paypal/Bitcoin →   

Don't Miss Any Linux and Unix Tips

Get nixCraft in your inbox. It's free:



{ 10 comments… add one }
  • Kingpin March 21, 2013, 12:13 pm

    OK, but how do I run two commands in the for loop? for () command1; command; done
    ???

    • Anne August 22, 2013, 5:00 pm

      two commands:
      for i in (); do echo $i ; ls $i; done

      nested for:

      for i in {0..3}; do for j in {0..9}; do echo -n \($i, $j\); echo Is today the $i$j \?; done; done

  • roger September 25, 2013, 5:50 pm

    I’d suggest you add an example of this to http://www.cyberciti.biz/faq/bash-for-loop/ also that would have helped me…maybe with a ToC at the top as well :)

  • w February 13, 2014, 10:49 am

    Thanks for this.

  • ronator October 14, 2014, 2:41 pm

    For the very rare case yout got file names with a leading dash:

    for i in *; do echo $i; done [ will not show files with leading dash ]

    for i in “*”; do echo $i; done [ will show files with leading dash (but not one file per line) ]

  • Anne February 13, 2015, 11:08 pm

    Love it! Thanks!

  • Jakob June 8, 2016, 10:10 am

    Work on Folders:

    for i in */; do (cd “$i” && git fetch) done

  • Jimy July 21, 2016, 4:35 am

    Thanks for this!
    It saved me hours of banging my head on the table

  • Mora October 1, 2016, 11:45 am

    thanks

  • Rakesh October 4, 2016, 7:15 pm

    Hi, I’m new in bash, please help me somebody. ..
    I have one folder in linux server and in folder has some *.sql file, so I want to execute all the sql in my mysql sequencely one by one. We also want output on my display as well as in log file for every files execution error. Ex. /root/desktop/sql/1_ff_f_update. And 2_*, 3_* so on. Count of the file was change every time so we can not tell u of count of the files….

    If possible help me..
    Thanks in advance. .

Leave a Comment

You can use these HTML tags and attributes: <strong> <em> <pre> <code> <a href="" title="">


   Tagged with: , , , , , , ,