码迷,mamicode.com
首页 > 其他好文 > 详细

运行shell脚本提示“syntax error near unexpected token for((i=0;i<$length;i++))”

时间:2014-06-21 21:42:38      阅读:342      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   com   使用   

sh脚本如下:
#!/usr/bin/env bash

county="3 4 5 6 7 8 9 10 11 12 16 29 39 44 53 62 72 84 97 115 128 151 168 187 199 218 230 10079 10239 32478"
array=($county)
length=${#array[@]}

for((i=0;i<$length;i++))
do
     $HIVE_HOME/bin/hive -e "select * from county_area_category where county_id=${array[$i]}" >>  /home/deploy/ouyangyewei/category_area/data/${array[$i]}_county_area_category.txt;
done

sh是在windows平台下编写的,上传到linux服务器后运行,提示如下错误:
done-bash-3.2$ sh test.sh
: command not found
: command not found
'est.sh: line 7: syntax error near unexpected token `
'est.sh: line 7: `for((i=0;i<$length;i++))

原因是因为所处理的文件换行符是dos格式的"\r\n",可以使用cat -v 文件名 来查看换行符是否是,如果是上述,则行尾会是^m,如下:
-bash-3.2$ cat -v test.sh
#!/usr/bin/env bash^M
^M
county="3 4 5 6 7 8 9 10 11 12 16 29 39 44 53 62 72 84 97 115 128 151 168 187 199 218 230 10079 10239 32478"^M
array=($county)^M
length=${#array[@]}^M
^M
for((i=0;i<$length;i++))^M
do^M
        $HIVE_HOME/bin/hive -e "select * from county_area_category where county_id=${array[$i]}" >>  /home/deploy/ouyangyewei/category_area/data/${array[$i]}_county_area_category.txt;^M

这就导致了linux的换行符不一致问题,所以提示了上述错误!

解决办法:
使用sed命令处理一下文件,使格式保持为linux格式,如下:
sed ‘s/\r//‘ 源文件 > 转换后文件
?OO-bash-3.sed 's/\r//' test.sh > county_area_category.sh

ok,这样就可以了!

运行shell脚本提示“syntax error near unexpected token for((i=0;i<$length;i++))”,布布扣,bubuko.com

运行shell脚本提示“syntax error near unexpected token for((i=0;i<$length;i++))”

标签:style   class   blog   code   com   使用   

原文地址:http://blog.csdn.net/yeweiouyang/article/details/32101981

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!