码迷,mamicode.com
首页 > Windows程序 > 详细

Windows编写的shell脚本,在linux上无法执行

时间:2018-11-25 13:11:36      阅读:315      评论:0      收藏:0      [点我收藏+]

标签:sql   文件   新手   roo   flush   显示   测试   mysql   技术分享   

  前两天由于要查一个数据库的binlog日志,经常用命令写比较麻烦,想着写一个简单的脚本,自动去刷一下数据库的binlog日志,就直接在windows上面写了,然后拷贝到linux中去运行,其实很简单的脚本,具体如下:

#!/bin/bash
#flush mysql logs every day

BASEDIR="/usr/local/mysql"
echo $BASEDIR
BIN="$BASEDIR/bin"
echo $BIN
MYSQL="$BIN/mysql"
echo $MYSQL
USER="root"
PASSWORD="123456"
PORT=1234
OPERTATION="flush logs"
for IP_ADDR in {192.168.1.108,192.168.1.110,192.168.1.118}
    do
        echo "$MYSQL --host=$IP_ADDR --port=$PORT --user=$USER --password=$PASSWORD  -e $OPERTATION"
    done

  就是一个很简单的刷新数据库日志的操作,用了一个循环语句而已,拷贝到linux上面时,死活就报错,显示for循环的语法不对,命令操作路径不对。

  技术分享图片

  晚上查了好久,就是不能用,而且整个命令的路径都变了,在原文件上删除了所有的命令,重新手敲,还是不行,一度怀疑自己写的shell是有问题的,找了一个测试的机子,将命令拷贝上去,发现是正常的。为了能够验证我的脚本是正常的,我都用echo将要执行的命令打印出来了。但是在生产环境上,就是不行,突然想到了格式的问题,dos2unix,尝试着转换了一次之后,正常了。太坑了。

  dos2unix将Windows上的格式,转换成linux上可执行的格式。

Windows编写的shell脚本,在linux上无法执行

标签:sql   文件   新手   roo   flush   显示   测试   mysql   技术分享   

原文地址:https://www.cnblogs.com/bobo137950263/p/10015005.html

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