我正在测试DD-WRT Web界面中的一个小脚本,该脚本随机化路由器的MAC地址。该脚本使用awk进行随机化。当awk使用而没有 shebang(#!/ bin / bash)时,脚本可以正常工作,反之亦然(没有awk但包括shebang)。但是,当使用shebang 和 awk时,脚本不起作用。
Works(使用awk,但没有shebang):
nvram set mac_clone_enable=1;
nvram set def_hwaddr=$(awk 'function m(n){srand(systime()+n);return":"(10+int(rand()*99));}END{print "A4"m(1)m(2)m(3)m(4)m(5);}');
nvram commit;
rc restart;
也有作品(有shebang,但没有awk):
#!/bin/bash
nvram set mac_clone_enable=1;
nvram set def_hwaddr="02:44:55:66:77:88";
nvram commit;
rc restart;
不工作(shebang和awk):
#!/bin/bash
nvram set mac_clone_enable=1;
nvram set def_hwaddr=$(awk 'function m(n){srand(systime()+n);return":"(10+int(rand()*99));}END{print "A4"m(1)m(2)m(3)m(4)m(5);}');
nvram commit;
rc restart;
我需要脚本使用awk并拥有shebang,因此它可以在cron作业中使用。可能是什么问题?
答案 0 :(得分:1)
awk
期待输入文件。您可以使用BEGIN
块
awk 'function r() {return ":"(10+int(rand()*99))}
BEGIN{srand(); print "A4" r() r() r() r() r()}'
返回
A4:72:63:62:91:102
每次你也不需要重新初始化随机种子;一次就够了。