Unix: So ermitteln Sie, ob ein Programm ausgeführt werden kann

Unix: So ermitteln Sie, ob ein Programm ausgeführt werden kann

Ich schreibe ein Skript, um die Quellumgebung zu erstellen. Die Handhabung des PATH-Teils ist einfach. Aber wie soll ich prüfen, ob ein Programm korrekt ausgeführt werden kann, wenn sein Pfad zu PATH hinzugefügt wird? Die Verwendung whichreicht nicht aus, da nur die Existenz der ausführbaren Datei geprüft, nicht aber ihre Ausführung. Was ich jetzt habe, ist, die Version des Programms (also ) zu prüfen find -versionund zu prüfen, ob die Rückgabenachricht " command not found" enthält. Das ist nicht ideal. Gibt es eine bessere Möglichkeit, dies zu tun?

Antwort1

Ich glaube nicht, dass es eine ideale Möglichkeit gibt, das zu tun, was Sie wollen. Wie Martin sagt, können Sie überprüfen, ob das ausführbare Bit gesetzt ist, aber das bestätigt nicht, dass es tatsächlich ausgeführt wird.

Sie können beispielsweise versuchen, das Programm auszuführen und statt nach einem bestimmten Text im Programm selbst zu suchen, die $?Variable zu betrachten. Diese gibt den Beendigungsstatus des Programms zurück (üblicherweise 0 für OK) oder (auf einem CentoOS-System, das ich zur Hand habe) 127 für Datei nicht gefunden, z. B.

find --version
if [[ $? == 127 ]]
then
    exit 1
fi

Der Grund, warum es keinen idealen Weg gibt, ist, dass ein Exit-Status von 0 für OK nur konventionell ist und Programme einen anderen Exit-Status zurückgeben können, wenn sie ausgeführt werden, aber ein Fehler auftritt. Dies kann für Sie funktionieren, bis etwas ausgeführt wird und einen Exit-Status von 127 zurückgibt, um einen Fehlerzustand anzuzeigen.

Antwort2

Du kannst den ... benutzen-x Operatorum zu testen, ob das Flag für ausführbare Dateien für eine Datei gesetzt ist. Es sagt Ihnen jedoch nicht, ob die ausführbare Datei tatsächlich ausgeführt wird.

verwandte Informationen