CURL in Bash-Skript funktioniert mit. (Punktabstand), nicht ./ (Punktschrägstrich)

0

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.shes starte, funktioniert es einwandfrei, aber wenn ich es durch Eingabe ./scriptName.shder 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"
General_Twyckenham
quelle
2
Ist Ihr Skript ausführbar? Wenn nicht rennen chmod a+x scriptName.sh. Der .Befehl erfordert nur, dass ein Skript lesbar ist.
AFH
@AFH Duh, ich fühle mich wie ein Idiot. Daran habe ich eigentlich gedacht, aber mein Kollege sagte, dass er das schon getan hat: / Danke !!!
General_Twyckenham
Hat das Ausführen des Skripts irgendetwas behoben? Das ist überraschend für mich, als ob das Skript nicht ausführbar wäre. Bash hätte es nicht ausgeführt, so dass es nicht einmal an die Spitze geriet. Ich vermute, dass die Umgebungsvariable https nicht exportiert wurde. . scriptName.sh führt das Skript in derselben Shell aus, sodass alle Umgebungsvariablen angezeigt werden. ./scriptName.sh führt das Skript in einer Subshell aus, sodass nur exportierte Umgebungsvariablen angezeigt werden. Probieren export https;./scriptName.shSie aus, ob sich dadurch etwas ändert.
Blm
Warum steht $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.
Gordon Davisson
@blm Danke für den Rat. Laut dem früheren Kommentar von AFH .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.
General_Twyckenham

Antworten:

0

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:

#! / bin / sh

Wenn Sie Shell-spezifische Funktionen verwenden, sollten Sie natürlich angeben, welche alternative Shell verwendet werden soll.

TOOGAM
quelle