![Unix: So ermitteln Sie, ob ein Programm ausgeführt werden kann](https://rvso.com/image/617815/Unix%3A%20So%20ermitteln%20Sie%2C%20ob%20ein%20Programm%20ausgef%C3%BChrt%20werden%20kann.png)
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 which
reicht 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 -version
und 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.