我只是想暴力破解我的旧路由器,但 for 循环确实是业余风格。如果我只知道包含的字符,如何编写一个漂亮的 for 循环?已经找到了那页面,但它不包括我的案例。我想到了类似以下的内容,但显然它不起作用:
for word in $(cat charList)$(cat charlist); do echo ${word}; done
答案1
恢复出厂设置
为什么不直接将路由器重置为出厂设置并以这种方式获得访问权限?花费的时间会更少,并且可以在几分钟内返回。
For 循环
如果必须使用for
循环:
$ cat charlist
a
b
c
d
e
f
g
这个构造:
$ for i in $(cat charlist); do for j in $(cat charlist); do echo $i$j;done;done
例子
$ for i in $(cat charlist); do for j in $(cat charlist); do \
echo $i$j;done;done | tail -5
gc
gd
ge
gf
gg
获取| tail -5
完整列表。
使用大括号扩展
您还可以让 Bash 创建字符集,如下所示:
$ echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
$ echo {1..20}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
例子
$ for i in {a..z}; do for j in {a..z}; do echo $i$j;done;done | tail -5
zv
zw
zx
zy
zz
此外,您可以放弃一起使用循环,而只需让大括号扩展为您完成所有工作:
$ echo {a..z}{a..z}
例子
$ echo {a..z}{a..z} | cut -d" " -f1-10
aa ab ac ad ae af ag ah ai aj
再次删除| cut -d" " -f1-10
,这是为了限制我对前 10 个组合的回答中显示目的的输出量。
答案2
支撑扩展:只允许连续字符
Hirachical for 循环:这是浪费命令行
我想我有一个很好的方法:使用评估和大括号扩展
$ cat charList
a,b,_,X,5,1,' ',-,')',3
$ eval echo "{$(cat charList)}{$(cat charList)}{$(cat charList)}"
不幸的是我现在没有 bash,但这应该可以做到:
$ eval "for word in {$(cat charList)}{$(cat charList)}; do echo '${word}'; done"