在我的服务器(linux)上的文件的开头,它位于/etc/init.d/文件夹中,我有这一行:
!/bin/sh -e
这是什么意思,因为每次执行脚本的其余部分时它都能正常工作,除了显示错误:
!/bin/sh not found
有什么想法吗?
答案 0 :(得分:11)
该行定义了执行给定脚本的程序。
对于sh
,通常该行应以#字符开头,如下所示:
#!/bin/sh -e
-e标志的长名称是errexit
,导致脚本在第一个错误时立即退出。来自man sh
的更详细说明:
如果不是交互式,则在任何未经测试的命令失败时立即退出。如果该命令用于控制
if
,elif
,while
或until
,则认为命令的退出状态是显式测试的。或者如果该命令是&&
或||
operator的左手操作数。
答案 1 :(得分:9)
对我来说就像是搞砸了shebang line。你需要在'!'前加上一个'#'。
答案 2 :(得分:3)
#!/bin/bash
这是脚本中告诉系统使用bash shell执行脚本的第一行。