Что делает строка '! / Bin / sh -e'? - PullRequest
9 голосов
/ 29 мая 2010

В начале файла на моем сервере (linux), который находится в папке /etc/init.d/, у меня есть эта строка:

 !/bin/sh -e

Что это значит, потому что каждый раз, когда я выполняю остальную часть скрипта, он работает нормально, за исключением ошибки, которая показывает:

 !/bin/sh not found

Есть идеи?

Ответы [ 3 ]

12 голосов
/ 05 декабря 2015

Эта строка определяет, какая программа будет выполнять данный скрипт. Для sh обычно эта строка должна начинаться с символа # следующим образом:

#!/bin/sh -e

Длинное имя флага -e: errexit, что приводит к немедленному завершению работы скрипта при первой ошибке. Более подробное описание от man sh:

Если он не интерактивный, немедленно завершите работу, если любая из непроверенных команд не будет выполнена. Состояние выхода команды считается явно проверенным, если команда используется для управления if, elif, while или until; или если команда является левым операндом оператора && или || .

9 голосов
/ 29 мая 2010

Выглядит как запутанная линия Шебанга .Вам нужно поставить «#» перед «!».

3 голосов
/ 29 мая 2010
 #!/bin/bash   

это первая строка в скрипте, которая сообщает системе, что для выполнения скрипта необходимо использовать оболочку bash.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...