2

我是 shell 脚本的新手。我正在尝试编写一个脚本,该脚本会引发意外的文件结束错误。我在stackoverflow上检查了其他解决方案,但是我无法解决这里。任何帮助,将不胜感激。我的脚本是

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

正如建议的那样,我尝试在 linux 中创建它,现在出现错误 [: * Tomcat servlet engine is not running.: unexpected operator

4

3 回答 3

2

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

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

于 2013-03-24T11:40:26.700 回答
2

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

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
于 2013-03-24T11:40:37.777 回答
0

通过查看[:Unexpected operator in shell programming解决了这个问题。

我不得不将它作为 bash 而不是 sh 运行。

于 2013-03-24T11:39:37.273 回答