【发布时间】:2013-01-13 23:00:48
【问题描述】:
我正在尝试在 Windows 7 上的 cygwin 中运行以下 bash 脚本
REPEATTIMES="$1"
if [ $# = 0 ]; then
echo "Usage: fetch topN repeatTimes"
exit 1
fi
for (( i=1; i<=$REPEATTIMES; i++ ))
do
echo "ITERATION: $i"
echo "GENERATING"
log=thelogs/log
bin/nutch generate crawl/segment -topN 10 > $log
batchId=`sed -n 's|.*batch id: \(.*\)|\1|p' < $log`
echo "batch id: $batchId "
# rename log file by appending the batch id
log2=$log$batchId
mv $log $log2
log=$log2
echo "FETCHING"
bin/nutch fetch crawl/segments/$batchId >> $log
echo "PARSING"
bin/nutch parse crawl/segments/$batchId >> $log
echo "UPDATING DB"
bin/nutch updatedb crawl/crawldb crawl/segments/$batchId >> $log
echo "Done "
done
但是当我运行它时,我得到了错误:
line 11 :syntax error near unexpected token '$'\r'
line 11 :'for (( i=1; i<= REPEATTIMES; i++ ))
脚本在 ubuntu 服务器上运行良好。但我现在需要在 Windows 机器上运行它。
【问题讨论】:
-
你在文件上试过dos2unix吗?如果你用记事本或其他东西编辑它并在那里得到 CRLF 字符,那可能会把事情搞砸。如果我没记错的话,Cygwin 只会将 LF 字符视为换行符。