Запускаю скрипты из основного скрипта, используя ту же подоболочку. У меня такое случается?

Запускаю скрипты из основного скрипта, используя ту же подоболочку. У меня такое случается?

Что делается в скрипте, чтобы все скрипты выполнялись автоматически

#! / data / data / com.termux / files / usr / bin / bash

echo "This is the main script and is intended to execute all three auxiliaries."

# Run aux1.sh
source aux1.sh

# Run aux2.sh
 source aux2.sh

  Каждый раз, когда я встраивал свой скрипт с помощью shc, со мной происходило следующее:

./Auto-Help1.0.sh: line 65: source: ./DataWeb.sh: cannot execute binary file

решение1

shcзаменяет скрипт оболочки (который обычно представляет собой текстовый файл) на исполняемый двоичный файл (который больше не является скриптом оболочки).

sourceили .предполагают, что их аргумент — текстовый файл, а не двоичный. Поэтому вы не можете использовать вывод shcс source.

решение2

Для людей, которые не так хорошо разбираются в оболочках unix/linux, сообщения об ошибках могут быть немного загадочными. Длинная версия сообщения об ошибке:

Где-то в ваших скриптах, aux1.shили aux2.sh, или, возможно, даже в скрипте, который я вызвал из этих скриптов, Auto-Help1.0.shвыполняется скрипт с именем. Auto-Help1.0.shВ этом скрипте есть ошибка, а точнее в строке 65.

В строке 65 этого скрипта вы, скорее всего, найдете source ./DataWeb.sh. Это означает: выполнить ./DataWeb.shв текущей оболочке как набор команд оболочки.

Однако, ./DataWeb.shне распознается как скрипт оболочки. Это двоичный файл. Поэтому он не может быть выполнен как скрипт, и его нельзя получить таким образом.

Так, что дальше?

- Посмотрите на ./DataWeb.sh. Это двоичный файл или это должен быть скрипт оболочки (как следует из названия)? Тогда почему он отображается как двоичный файл? - Как вы обычно выполняете ./DataWeb.sh? Попробуйте сделать это таким образом в строке 65 Auto-Help1.0.sh, вместо того, чтобы указывать исходный файл.

Связанный контент