您好我正在尝试在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 # ! / u s r / b i n / b a s h cr
0000020 nl w g e t sp - - o u t p u t - d
0000040 o c u m e n t = - sp h t t p : /
0000060 / r u n e s c a p e . c o m / t
0000100 i t l e . w s sp 2 > / d e v / n
0000120 u l l sp \ cr nl sp sp sp sp | sp g r e
0000140 p sp P l a y e r C o u n t sp \ cr
0000160 nl sp sp sp sp | sp h e a d sp - 1 l sp
0000200 \ cr nl sp sp sp sp | sp s e d sp ' s /
0000220 ^ [ ^ > ] * > / / ' sp \ cr nl sp sp
0000240 sp sp | sp s e d sp " s / c u r r e
0000260 n t l y . * $ / $ ( d a t e sp '
0000300 + % r sp % b sp % d sp % Y ' ) / "
0000320
答案 0 :(得分:2)
你有DOS风格的行结尾。我怀疑这是造成这个问题的原因:
0000120 u l l sp \ cr nl sp sp sp sp | sp g r e
那里应该只有nl
。但是,您正在将文件传输到Linux或从Linux传输文件正在对您进行行结束转换。
尝试flip
,conv
,d2u
,dos2unix
等进行修复。
答案 1 :(得分:2)
你需要你的文件没有窗口式的行结尾。
dos2unix script2.txt script2.txt
或者,使用编辑器设置行结尾。例如,在vim中,您将使用:set ff=unix