User Tools

Site Tools


howtos:bash_loop_examples

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

howtos:bash_loop_examples [d/m/Y H:i] (current)
Line 1: Line 1:
 +====== For sample ======
 +<code>
  
 +#!/bin/bash
 +for i in $( ls ); do
 +  echo item: $i
 +done
 +</code>
 +        
 +
 +====== C-like for ======
 +<code>
 +
 +#!/bin/bash
 +for i in `seq 1 10`;
 +do
 +  echo $i
 +done    
 +
 +</code>
 +        
 +====== While sample ======
 +
 +<code>
 +#!/bin/bash 
 +COUNTER=0
 +while [  $COUNTER -lt 10 ]; do
 +  echo The counter is $COUNTER
 +  let COUNTER=COUNTER+1 
 +done
 +
 +</code>
 +         
 +<code>
 +
 +#!/bin/bash
 +
 +var0=0
 +LIMIT=10
 +
 +while [ "$var0" -lt "$LIMIT" ]
 +#      ^                    ^
 +# Spaces, because these are "test-brackets" . . .
 +do
 +  echo -n "$var0 "        # -n suppresses newline.
 +  #                       Space, to separate printed out numbers.
 +
 +  var0=`expr $var0 + 1`   # var0=$(($var0+1))  also works.
 +                          # var0=$((var0 + 1)) also works.
 +                          # let "var0 += 1"    also works.
 +done                      # Various other methods also work.
 +
 +echo
 +
 +exit 0
 +</code>
 +
 +<code>
 +#!/bin/bash
 +
 +echo
 +                               # Equivalent to:
 +while [ "$var1" != "end" ]     # while test "$var1" != "end"
 +do
 +  echo "Input variable #1 (end to exit) "
 +  read var1                    # Not 'read $var1' (why?).
 +  echo "variable #1 = $var1"   # Need quotes because of "#" . . .
 +  # If input is 'end', echoes it here.
 +  # Does not test for termination condition until top of loop.
 +  echo
 +done  
 +
 +exit 0
 +
 +</code>
 +
 +Inside its test brackets, a while loop can call a function:
 +<code>
 +
 +t=0
 +
 +condition ()
 +{
 +  ((t++))
 +
 +  if [ $t -lt 5 ]
 +  then
 +    return 0  # true
 +  else
 +    return 1  # false
 +  fi
 +}
 +
 +while condition
 +#     ^^^^^^^^^
 +#     Function call -- four loop iterations.
 +do
 +  echo "Still going: t = $t"
 +done
 +
 +# Still going: t = 1
 +# Still going: t = 2
 +# Still going: t = 3
 +# Still going: t = 4
 +</code>
 +
 +====== Until sample ======
 +
 +<code>
 +#!/bin/bash 
 +COUNTER=20
 +until [  $COUNTER -lt 10 ]; do
 +  echo COUNTER $COUNTER
 +  let COUNTER-=1
 +done
 +         
 +</code>
 +
 +====== Snow in Terminal ======
 +<code>
 +while true
 +  do 
 +  N=$(($RANDOM % $COLUMNS))
 +  for i in $( seq 1 $N )
 +    do 
 +    echo -n " "
 +    done
 +    echo \*
 +  done
 +</code>
 +
 +And as a one-liner: 
 +<code>while true;do N=$(($RANDOM % $COLUMNS));for i in $( seq 1 $N );do echo -n " ";done;echo \*;done</code>
 +----
 +Source: http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html
howtos/bash_loop_examples.txt · Last modified: d/m/Y H:i (external edit)