In einer Bash-Datei s.sh
habe ich eine Executor-Funktion, an die ich die auszuführenden Befehle übergebe. Wenn ein Befehl nicht wie erwartet funktioniert, gibt diese Funktion den Befehl aus.Die Bash-Funktion führt den Eingabebefehl nicht aus
Executor()
{
if ! $*
then
echo "$*"
exit 2
fi
}
Jetzt bin Aufruf ich diese Funktion -
Executor clangPath="Hello" make
(Dieser verwendet wird, um den Wert von clangPath Variable als "Hallo" in der Make-Datei eingestellt)
Dies verursachte einen Fehler -
./s.sh: line 5: clangPath=Hello: command not found
[./s.sh] Error: clangPath=Hello make
jedoch der gleiche Befehl wie diese Ausführung funktioniert
if ! clangPath="Hello" make
then
echo "HelloWorld!"
fi
Nachdem bei dem Fehler suchen, dachte ich, es könnte ein Fehler mit den String-Zitaten, also habe ich versucht,
exitIfFail clangPath='"Hello"' make
Auch dies in einem Fehler -
./s.sh: line 5: clangPath="Hello": command not found
[./s.sh] Error: clangPath="Hello" make
Was könnte der Grund für den Fehler sein?
Sie könnten versuchen, wenn!/usr/bin/ksh $ * ... abhängig davon, wo & welche Shell Sie verwenden? Ich kann hier nicht testen. – FreudianSlip
Siehe [Bash FAQ 050] (http://mywiki.wooledge.org/BashFAQ/050). – chepner
Eww, '$ *' ... Ich glaube du mispelt '" $ @ "'. –