9. May 2012 23:21
It can be commonly known that you can do for loops in bash by doing something like for i in * ; do echo $i ; done or some such. This will loop for every file in the current directory. Though typical for loops for a specific number range can be a little more difficult since you need to form the data to be able to execute the loop.
To get a simple for loop to work we can copy python's for i in range(x, y): type of loop since the bash for loop is exactly the same as this. Both bash / python perform a for each loop around a list of data items rather than the traditional for loop with a counter. This can be used to our advantage since all you need to do is create a small program that generates this data lists.
The following c program does this.
#include <stdio.h>
#include <stdlib.h>
void print_usage(FILE *fp, char *app) {
fprintf(fp, "Usage: %s <start number> <end number>\n", app);
fprintf(fp, "\n");
}
int main(int argc, char **argv) {
int a = 0, b = 0;
int i;
if (argc < 3) {
print_usage(stderr, argv[0]);
exit(EXIT_FAILURE);
}
a = atoi(argv[1]);
b = atoi(argv[2]);
if (a >= b) {
int tmp = a;
b = a;
a = tmp;
}
for(i=a;i<=b;i++) {
printf("%d\n", i);
}
return 0;
}
All you need to do is put the program above into a c file and compile it with gcc (gcc -Wall range.c -o range) and place the executable on the path (eg in $HOME/bin). Then you can do for loops in the bash shell the following way.
for i in `range 0 20` ; do echo $i ; done
The above will of course produce the output of 0 to 20 on the terminal when run.
1c2e21a4-e464-413d-a365-9824a4c599bb|0|.0