Linux运行shell脚本出现出错,可能是环境编码不一致造成的。
今天,为了方便在linux中快速启动和关闭程序,编写了一个shell脚本,但是在启动的时候,并不顺利,执行脚本,报了了以下异常错误信息:
[root@izwz94v2sdd3vagmtoxauvz ~]# sh stop.sh
stop.sh: line 2: $'\r': command not found
stop.sh: line 11: syntax error: unexpected end of file
刚开始,我以为是我编写脚本的时候出现了语法错误,然后我去仔细检查了一下,发现并没有什么语法错误,以下是我编写的简单shell脚本,主要作用就是关闭一个java服务
#!/bin/bash
PID=$(ps -ef | grep tbhb-admin.jar | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
echo tbhb-admin.jar服务已关闭。
else
echo 正在关闭tbhb-admin.jar服务:$PID
kill $PID
fi
经过多种途径,找到了以下解决方案:产生原因主要是windows中文件结束符和linux中的文件结束符不一致导致的。
使用vim命令进入编辑脚本文件界面,直接输入:set ff回车,即可看到当前脚本格式。如果看到:fileformat=dos
则需要把格式修改为unix,方法是直接输入:set ff=unix,输入完成后回车即可看到:fileformat=unix