我是shell脚本新手。我试图编写一个脚本,它会导致意外的文件错误结束。我已经在stackoverflow上检查了其他解决方案,但是我不能在这里解决。任何帮助,将不胜感激。我的脚本是
if [ "$(/etc/init.d/tomcat7 status)" == " * Tomcat servlet engine is not running." ]; then /etc/init.d/tomcat7 start; fi
正如所建议我尝试在linux中创建它,现在我收到一个错误[:* Tomcat servlet引擎没有运行:意外的运算符
答案 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来运行它。