Да, в этом случае.
Резюме: Строка hash-bang (также называемая "shebang" и другие) когда-либо нужна только в том случае, если она находится в исполняемом скрипте, который запускается без явного указания своего интерпретатора (точно так же, как при выполнении двоичного исполняемого файла).
В случае вашего кода вы явно запускаете скрипт в данном документе с уже bash
. Нет необходимости добавлять хэш-банг, так как он будет рассматриваться как комментарий.
Поскольку сценарий здесь-документа, похоже, хочет выполняться с установленной опцией -x
(судя по #! / Bin / bash -x
), вам придется используйте set -x
внутри здесь-документа, чтобы получить тот же эффект, что и при запуске здесь-документа в качестве собственного сценария, опять же, потому что хэш-взлом обрабатывается как комментарий.
Строка хеш-взлома используется при выполнении исполняемого текстового файла. Строка сообщает системе, какой интерпретатор использовать для ее выполнения, и при необходимости позволяет вам указать один аргумент для этого интерпретатора ( -x
в вашем случае).
Вам нужен хэш-удар, если вы пишете здесь-документ в файл, который позже будет использоваться в качестве сценария. Например:
cat >myscript.sh <<
Такой файл также должен быть исполняемым ( chmod + x myscript.sh
). Но опять же, если бы вы явно выполняли этот сценарий с помощью bash
, например, через
$ bash ./myscript.sh
или
$ bash -x ./myscript.sh
(или, что то же самое, из другого сценария), то никакого хеширования не требуется, и сценарий не обязательно делать исполняемым.
Все сводится к тому, как вы хотите выполнить сценарий.
См. Также статью в Википедии о Shebang .