帮助Cygwin bash文件

时间:2010-05-12 11:24:35

标签: windows cygwin bash

我有一个bash文件,我试图在Windows 7平台上运行Cygwin,但是这样做时我给了我一些奇怪的错误。 bash文件适用于我的Linux系统。 bach文件如下所示:

for ((r=0; r <10; r++))

    netcat localhost 4444 < myfile.file &

done

wait

但是我的for循环出错了。它更精确地写道:

./tuning_test.bsh: line 1: syntax error near unexpected token `('

'/tuning_test.bsh: line 1: `?for ((r=0; r <10; r++))

我不明白,因为我确信我的Linux上有一个工作的bash文件。我甚至试图从Linux-bash站点找到一个for循环示例并运行它,但是出现了同样的错误。

我是Cygwin的新手,并不知道它是否有一些小怪癖或其他一些我必须注意的事情,我试图在他们的主页上查看文档和常见问题解答。

Mestika

5 个答案:

答案 0 :(得分:5)

你似乎错过了一个do和一个shebang线:

#!/bin/bash
for (( r=0; r<10; r++ ))
do
    netcat localhost 4444 < myfile.file &
done
wait

答案 1 :(得分:2)

是的,我发现我的texteditor(记事本++)是坐在DOS / Windows格式化的,我只是把它改成了UNIX而且工作正常: - )

答案 2 :(得分:1)

你应该用do做完循环块。完成
'做'错过了

答案 3 :(得分:1)

也许Cygwin版本的bash比Linux版本要老很多?这适用于MSYS bash:

for ((r=0; r <10; r++))
do
    echo $r
done

请注意,我已将do关键字添加到循环中。您也可以尝试将循环编写为:

for r in 0 1 2 3 4 5 6 7 8 9
do
    echo $r
done

答案 4 :(得分:0)

以下脚本将在端口0-65000上执行ssh,并将每次执行的所有日志输出到名为log.txt的文件中

替换ssh -tt -p $r host中的“主机” 加上您希望“ SSH”登录的主机地址。

-tt命令强制tty分配并停止伪终端的分配。 (强制使用外壳)

#!/bin/bash
for (( r=0; r<65000; r++ ))
do
    ssh -tt -p $r host -E log.txt < log.txt
done
wait