Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash中的简单For循环_Bash - Fatal编程技术网

Bash中的简单For循环

Bash中的简单For循环,bash,Bash,我不明白为什么这段代码没有向netcat发送正确的信息 不知道该试什么 #!/bin/bash for i in {0000..9999} do echo UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $i | nc localhost 30002 done 目标是通过netcat将散列密码和4位pin发送到本地主机上的端口30002。Netcat将在收到正确的密码/pin组合后返回目标密码。您的shebang提示您使用的外壳不支持支架扩展。使用#/bin/bash(

我不明白为什么这段代码没有向netcat发送正确的信息

不知道该试什么

#!/bin/bash

for i in {0000..9999}

do
 echo UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ $i | nc localhost 30002
done

目标是通过netcat将散列密码和4位pin发送到本地主机上的端口30002。Netcat将在收到正确的密码/pin组合后返回目标密码。

您的shebang提示您使用的外壳不支持支架扩展。使用
#/bin/bash
(或任何正确的路径),如果您打算使用特定于bash的功能。根据您的更新,听起来您使用的是较旧版本的
bash
,它不会对大括号扩展的结果进行零填充

大括号扩展通常用于交互式使用,以减少关键点笔划。在脚本中,使用

for ((i=0; i< 10000; i++)); do
  printf 'UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ %04d\n' | nc localhost 30002
done

主机/端口的可能副本似乎顺序错误。您的shell是
/bin/sh
,而
{0000..9999}
是bash理解的。也许你想要
#/bin/bash
@karakfa已编辑。它在bash文件中是正确的,但是,我将它发布到了错误的站点。@wiregh0st您使用的是哪个版本的
bash
?直到Bash4,才添加零填充的大括号扩展。如果您使用的是早期版本(如macOS附带的版本),则类似于
{00..10}
的内容将扩展为
0123445678910
,而不是
001020304050607080910
i=0
while [ "$i" -lt 10000 ]; do
  printf 'UoMYTrfrBFHyQXmg6gzctqAwOmw1IohZ %04d\n' | nc localhost 30002
  i=$((i+1))
done