I've come across a few occasions where I wanted to specify a "range parameter" for Bash scripts. Like "1..4" meaning do for 1,2,3 and 4.

Here's a simple trick that uses the (relatively obscure) variable expansion and substring replacement capabilities of the shell.
#!/bin/bashv_range="1..3"         # or you could have taken it as a script parameterv_start=${v_range%%.*} # chomp everything from the left-most matching "."v_end=${v_range##*.}   # chomp everything up to the right-most matching "."

The repeated %% and ## basically mean you will get a "greedy" match, so you can say "1..4" or "1....5"; it doesn't matter how many repeats you have of the range delimiter. Of course, you can choose other delimiters such as a hyphen, as in "5-10", if you wish.

Now that you have extracted the start and end indices, you can then loop or whatever to your hearts content:
for ((a=v_start; a <= v_end ; a++))do   echo "Looping with a=$a"done For more information on variable expansion, see 9.3 in the Advanced Bash Scripting Guide. Postscript 5-Feb-2008: We live and learn! Hat tip to buford for alerting me to the seq utility, which simplifies the iteration over a range, as in: for a in seq 1 10do echo "Looping with a=$a"done

You still need to determine the start and end values of the range, which is the whole point of the variable expansions approach posted here.