shell脚本报错

秦彦卿 1年前 ⋅ 902 阅读

今天学习shell 脚本,写了脚本重启tomcat执行时遇到报错

shell脚本报错: -bash: xxx: /bin/bash^M: bad interpreter: No such file or directory

#! /bin/bash
#--kill 掉tomcat 

tomcat_home=/opt/soft/apache-tomcat-9.0.12

start_tomcat=${tomcat_home}/bin/startup.sh

port=8080
#根据端口号查询对应的pid
pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');

#杀掉对应的进程,如果pid不存在,则不执行
if [  -n  "$pid"  ];  then
    kill  -9  $pid;
fi
echo "tomcat 已关闭......"
#启动tomcat
${start_tomcat}
echo "tomcat 已启动......"

具体报错信息如下

-bash: ./killtomcat.sh: /bin/bash^M: bad interpreter: No such file or directory

主要原因是killtomcat.sh是我在windows下编辑然后上传到linux系统里执行的。.sh文件的格式为dos格式。而linux只能执行格式为unix格式的脚本。 我们可以通过vim编辑器查看文件的format

  1. 首先用vim 打开文件
 vim killtomcat.sh
  1. 在vim命令模式中,使用set ff命令查看
set ff
  1. 修改文件format格式
  set ff=unix

修改完成后,执行脚本,正常运行


注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: