运行shell脚本提示“syntax error near unexpected token for((i=0;i<$length;i++))”
来源:互联网 发布:手机淘宝分类链接 编辑:程序博客网 时间:2024/06/06 16:02
sh脚本如下:
#!/usr/bin/env bashcounty="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^Mcounty="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"^Marray=($county)^Mlength=${#array[@]}^M^Mfor((i=0;i<$length;i++))^Mdo^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,这样就可以了!
1 0
- 运行shell脚本提示“syntax error near unexpected token for((i=0;i<$length;i++))”
- shell 脚本报错^M: syntax error near unexpected token
- linux shell脚本syntax error near unexpected token `then'
- 运行shell脚本报错: syntax error near unexpected token `'\r''
- shell syntax error near unexpected token
- syntax error near unexpected token shell
- Shell:syntax error near unexpected token
- 脚本报syntax error near unexpected token `(',
- shell 脚本,在调试时,FOR循环那行代码,总是出现错误syntax error near unexpected token '$'\r''
- syntax error near unexpected token `
- syntax error near unexpected token `('
- “syntax error near unexpected token `”
- syntax error near unexpected token `
- shell---shell编程报错:“syntax error near unexpected token `”
- linux执行SHELL脚本报错“syntax error near unexpected token `in”解决
- linux执行SHELL脚本报错“syntax error near unexpected token `in”解决
- linux执行SHELL脚本报错“syntax error near unexpected token `in”解决
- shell编程报错:“syntax error near unexpected token `”
- unity3d sdk 91
- FParsec 库
- cocos2d-x 33中 场景切换
- OCP 1Z0 052 114
- OpenGL缓冲区对象之UBO
- 运行shell脚本提示“syntax error near unexpected token for((i=0;i<$length;i++))”
- 程序员自我提高的几点建议 很实诚
- PMP-合同类型
- Linux常用命令
- MySQL工具汇总 - cenalulu
- JAVA中String与StringBuffer的区别
- 此情可待成追忆
- MAX4410 中文数据手册综述
- [Cocoa]深入浅出Cocoa之消息