Linux脚本意外的文件结束错误

时间:2013-03-24 11:18:17

标签: linux bash scripting

我是shell脚本新手。我试图编写一个脚本,它会导致意外的文件错误结束。我已经在stackoverflow上检查了其他解决方案,但是我不能在这里解决。任何帮助,将不胜感激。我的脚本是

if [ "$(/etc/init.d/tomcat7 status)" == " * Tomcat servlet engine is not running." ]; then /etc/init.d/tomcat7 start; fi

正如所建议我尝试在linux中创建它,现在我收到一个错误[:* Tomcat servlet引擎没有运行:意外的运算符

3 个答案:

答案 0 :(得分:2)

当您在Windows上编写脚本时,很可能问题是Windows上的行端字符\ r \ n的不同编码,而在Linux上只有一个\ n。

尝试在脚本上使用dos2unix并再次运行。

答案 1 :(得分:2)

由于您在Windows上创建了该文件,因此原始问题很可能是由于换行符不匹配造成的。 Windows将换行符编码为CR-LF,而Linux / Unix仅使用LF和Mac OS。你可以用例如

来解决这个问题
recode ibmpc..latin1 your.sh

此外,您应该在脚本的第一行指定解释器:

#!/bin/bash

您的脚本应该看起来像这样:

#!/bin/bash
if [ "$(/etc/init.d/tomcat7 status)" == " * Tomcat servlet engine is not running." ]; then
  /etc/init.d/tomcat7 start
fi

答案 2 :(得分:0)

解决了这个[ :Unexpected operator in shell programming

我必须以bash而不是sh来运行它。