Ich habe ein Bash-Skript, das ein paar Benachrichtigungen über CURL an Slack sendet und ein Expect-Skript erzeugt.
Wenn ich das Skript über . scriptName.sh
es starte, funktioniert es einwandfrei, aber wenn ich es durch Eingabe ./scriptName.sh
der CURL-Teile starte, schlägt die Fehlermeldung fehl:
protocol $https not supported or disabled in libcurl
Hier ist die Basisdatei:
curl --data "building Dev" $"https://domain.slack.com/services/hooks/slackbot?token=yourTokenHere&channel=%23yourChannelHere"
expect script.exp
curl --data "Dev built" $"https://domain.slack.com/services/hooks/slackbot?token=yourTokenHere&channel=%23yourChannelHere"
chmod a+x scriptName.sh
. Der.
Befehl erfordert nur, dass ein Skript lesbar ist.export https;./scriptName.sh
Sie aus, ob sich dadurch etwas ändert.$
vor der URL ein? In Bash ruft dies die String-Lokalisierung auf. in anderen Schalen ... wer weiß? Apropos, Ihr Drehbuch sollte eigentlich mit einer Shebang-Zeile wie beginnen#!/bin/bash
..
scheint die Datei auch dann ausgeführt zu werden, wenn sie nur lesbar ist. Das Skript ausführbar zu machen, hat mein Problem behoben, aber ich hätte versucht, Ihre Vorschläge zu machen, wenn es nicht funktioniert hätte.Antworten:
Das Skript funktioniert also einwandfrei, wenn Sie es "ausgeben" (mit ". Command"), aber nicht, wenn Sie es ausführen (mit "./command").
Das erste, was überprüft werden muss, sind Berechtigungen. Stellen Sie sicher, dass es über ausführbare Berechtigungen verfügt.
Die andere Sache, die ich gefunden habe und die diese Art von Situation häufig behebt, ist, die Datei als Skript zu markieren, indem Sie Folgendes als oberste Zeile der Datei einfügen:
Wenn Sie Shell-spezifische Funktionen verwenden, sollten Sie natürlich angeben, welche alternative Shell verwendet werden soll.
quelle