Что делается в скрипте, чтобы все скрипты выполнялись автоматически
#! / 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
, вместо того, чтобы указывать исходный файл.