Was wird innerhalb eines Skripts getan, damit alle Skripte automatisch ausgeführt werden
#! / 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
Jedes Mal, wenn ich mein Skript mit shc einbette, passiert mir Folgendes:
./Auto-Help1.0.sh: line 65: source: ./DataWeb.sh: cannot execute binary file
Antwort1
shc
ersetzt das Shell-Skript (normalerweise eine Textdatei) durch eine ausführbare Binärdatei (die kein Shell-Skript mehr ist).
source
oder .
gehen Sie davon aus, dass ihr Argument eine Textdatei und keine Binärdatei ist. Sie können die Ausgabe von also nicht shc
mit verwenden source
.
Antwort2
Für Leute, die sich mit Unix/Linux-Shells nicht so gut auskennen, können die Fehlermeldungen etwas kryptisch sein. Die Langfassung der Fehlermeldung lautet:
Irgendwo in Ihren Skripten aux1.sh
oder aux2.sh
vielleicht sogar in einem Skript, das ich aus diesen Skripten aufgerufen habe, Auto-Help1.0.sh
wird ein Skript namens ausgeführt. Dieses Skript Auto-Help1.0.sh
enthält einen Fehler, und zwar in Zeile 65.
In Zeile 65 dieses Skripts finden Sie höchstwahrscheinlich source ./DataWeb.sh
. Das bedeutet: Führen Sie es ./DataWeb.sh
in der aktuellen Shell als Satz von Shell-Befehlen aus.
Wird jedoch ./DataWeb.sh
nicht als Shell-Skript erkannt. Es ist eine Binärdatei. Daher kann es nicht als Skript ausgeführt werden und es kann nicht auf diese Weise als Quelle verwendet werden.
Wie geht es weiter?
- Sehen Sie sich an ./DataWeb.sh
. Ist es eine Binärdatei oder sollte es ein Shellscript sein (wie der Name schon sagt)? Warum wird es dann als Binärdatei angesehen? - Wie führen Sie normalerweise aus ./DataWeb.sh
? Versuchen Sie es auf diese Weise in Zeile 65 von Auto-Help1.0.sh
, anstatt die Datei als Quelle anzugeben.