在我的服务器(Linux)中,位于 /etc/init.d/ 文件夹中的文件开头,有这样一行:
!/bin/sh -e
每次我执行脚本的其余部分都可以正常工作,但是会显示一个错误,这意味着什么?
!/bin/sh not found
有什么想法吗?
这行代码定义了将要执行给定脚本的程序。对于sh
而言,这行代码通常应该以#字符开头,如下所示:
#!/bin/sh -e
-e 标记的长名称是errexit
,使脚本在第一个错误发生时立即退出。以下是来自man sh
的更详细描述:
如果不是交互式的,则立即退出,如果任何未经测试的命令失败。如果命令用于控制
if
,elif
,while
或until
语句,则命令的退出状态被认为是明确已经经过测试;或者如果命令是&&
或||
操作符的左操作数,则该命令的退出状态被认为是明确已经经过测试。
#!/bin/bash
这是脚本中的第一行,告诉系统使用Bash shell来执行脚本。
-e
这个问题,因为它似乎不被我的 MacBook 上的 bash 所接受。 - dmckee --- ex-moderator kittenman sh
(或man dash
)显示“-e errexit:如果不是交互式的,则立即退出,如果任何未经测试的命令失败...” - Mark Peterssh myScript
。有了shebang行,您可以使用chmod +x...
设置文件为可执行文件,并在不显式调用解释器的情况下运行它。 - Mark Peters