20.23 如何在命令行上循环执行某条命令
https://scz.617.cn/unix/201205091722.txt
Q:
我想观察一下Linux ASLR的效果,一般会这样干:
$ cat /proc/self/maps | grep stack bf93b000-bf950000 rw-p bf93b000 00:00 0 [stack] $ cat /proc/self/maps | grep stack bfb55000-bfb6b000 rw-p bfb55000 00:00 0 [stack] $ cat /proc/self/maps | grep stack bfadf000-bfaf4000 rw-p bfadf000 00:00 0 [stack]
从中可以看出stack地址确实被随机化了。但这样手工执行3次同样的命令,太蠢了。 有什么办法在命令行上循环执行某条命令?
A: scz@nsfocus
$ for i in seq 0 1 5
;do echo $i;done
0
1
2
3
4
5
$ for i in $(seq 0 2 8);do echo $i;done 0 2 4 6 8
seq FIRST INCREMENT LAST
"man seq"了解更多细节。
$ for i in seq 0 1 2
;do cat /proc/self/maps | grep stack;done
bfb4d000-bfb62000 rw-p bfb4d000 00:00 0 [stack]
bfe1a000-bfe2f000 rw-p bfe1a000 00:00 0 [stack]
bfe20000-bfe36000 rw-p bfe20000 00:00 0 [stack]
D: lzx
$ for i in {0,1,2};do echo $i;done 0 1 2 $ for i in 0 1 2;do echo $i;done 0 1 2
A: zd@nsfocus
这个最高效:
$ for ((i=0;i<3;i++));do echo $i;done 0 1 2
$ for ((i=0;i<6;i+=2));do echo $i;done 0 2 4