重庆思庄Oracle、Redhat认证学习论坛

标题: shell脚本报错syntax error near unexpected token `$'\r'' [打印本页]

作者: jiawang    时间: 2022-11-1 15:05
标题: shell脚本报错syntax error near unexpected token `$'\r''
本帖最后由 jiawang 于 2022-11-4 09:07 编辑

这种情况发生的原因是因为你所处理的文件换行符是dos格式的"\r\n"
可以使用cat -v 文件名 来查看换行符是否是,如果是上述的,则行结尾会是^m
需要转换成linux/unix格式的"\n"

[root@sztech setup]# cat -v mysql.sql
[root@sztech setup]# cat -v mysql.sql
#!/bin/bash^M$
ipaddress=`ip a|grep "global"|awk '{print $2}' |awk -F/ '{print $1}'`^M$
file_output='mysql.html'^M$
td_str=''^M$
th_str=''^M$
myuser="root"^M$
mypasswd="Wangjia"^M$
myip="192.168.133.151"^M$
myport="3306"^M$
mysql_cmd="mysql -u${myuser} -p${mypasswd} -h${myip} -P${myport} --protocol=tcp --silent"^M$
#yum -y install bc sysstat net-tools^M$
#================================================SQL Segments========================================================================^M$
TOP_SCHEMA_SQL="select  table_schema,^M$
ROUND(SUM(TABLE_ROWS),2) as ALLSIZE_ROWS,^M$
ROUND(SUM(DATA_LENGTH+INDEX_LENGTH+DATA_FREE)/1024/1024,2) as ALLSIZE_MB,^M$
ROUND(SUM(DATA_LENGTH)/1024/1024,2) AS DATASIZE_MB,^M$
ROUND(SUM(INDEX_LENGTH)/1024/1024,2) AS INDEXSIZE_MB^M$
from information_schema.TABLES^M$
GROUP BY table_schema^M$
order by ALLSIZE_ROWS desc^M$
limit 10;^M$
"^M$

具体转换办法就是转换换行符
可以用sed命令处理一下文件,命令如下:
sed 's/\r//' 原文件 >转换后文件

[root@sztech setup]# sed -i 's/\r//g' mysql.sql









欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2