Cywgin没有正确运行脚本

你好,我想在cygwin中运行这个脚本,它不能正常工作。 它在linux下运行时工作正常。

错误:

$ ./script2.txt >> count.txt ./script2.txt: line 3: syntax error near unexpected token `|' '/script2.txt: line 3: ` | grep PlayerCount \ 

原文:

 #!/usr/bin/bash wget --output-document=- http://runescape.com/title.ws 2>/dev/null \ | grep PlayerCount \ | head -1l \ | sed 's/^[^>]*>//' \ | sed "s/currently.*$/$(date '+%r %b %d %Y')/" 

什么人要求:

 $ od -a script2.txt 0000000 # ! / usr / bin / bash cr 0000020 nl wget sp - - output - d 0000040 ocument = - sp http : / 0000060 / runescape . com / t 0000100 itle . ws sp 2 > / dev / n 0000120 ull sp \ cr nl sp sp sp sp | sp gre 0000140 p sp P layer C ount sp \ cr 0000160 nl sp sp sp sp | sp head sp - 1 l sp 0000200 \ cr nl sp sp sp sp | sp sed sp ' s / 0000220 ^ [ ^ > ] * > / / ' sp \ cr nl sp sp 0000240 sp sp | sp sed sp " s / curre 0000260 ntly . * $ / $ ( date sp ' 0000300 + % r sp % b sp % d sp % Y ' ) / " 0000320 

你需要你的文件不要有窗口式的结尾。

 dos2unix script2.txt script2.txt 

或者,用你的编辑器设置行结束符。 例如,在vim中,你可以使用:set ff=unix

你有DOS风格的行尾。 我怀疑这是什么原因造成的问题:

  0000120 ull sp \ cr nl sp sp sp sp |  sp gre 

那应该只有nl那里。 不过,您将文件传输到Linux的过程正在对您进行结束转换。

尝试flipconvd2udos2unix等来解决。