编写 shell 脚本报错syntax error near unexpected token `$’do\r”
问题
之前写过一个自动杀死 redis 的 shell 脚本,但是这次当我使用时却发现一直报错 syntax error near unexpected token$’do\r”`
解决
网上搜了一下,大概是因为 Linux 和 Windows 下的回车换行符不兼容
直接打开 notepad++ ,将出问题的脚本粘贴进 notepad++ ,然后 视图>显示符号>显示所有符号


Windwos 的回车换行都是 CR LF ,而 Linux 的回车换行为 LF
直接点击 编辑>文档格式转换>转换为UNIX格式


将文件保存,并上传到服务器。执行之后发现依然报错,但是报错变了,仔细检查之后发现
xxxxxxxxxx
redisPid=`ps -ef | grep redis|awk '{print $2}'`
for i in redisPid
do
echo "kill the $1 process [$i]"
kill -9 $i
done
原来是脚本写的有问题,直接修改脚本之后
xxxxxxxxxx
redisPid=`ps -ef | grep redis | awk '{print $2}'`
for i in $redisPid
do
echo "kill the redis process [$i]"
kill -9 $i
done
运行正确