CURL w skrypcie bash współpracuje z. (kropka), nie ./ (kropka)

0

Mam skrypt bash, który wysyła kilka powiadomień do Slacka za pośrednictwem CURL i odradza oczekiwany skrypt.

Kiedy uruchamiam skrypt za . scriptName.shjego pośrednictwem , działa dobrze, ale kiedy go uruchamiam, wpisując ./scriptName.shczęści CURL, nie powiodło się z komunikatem o błędzie:

protocol $https not supported or disabled in libcurl

Oto podstawowy plik:

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
źródło
2
Czy twój skrypt jest wykonywalny? Jeśli nie uruchom chmod a+x scriptName.sh. .Polecenie wymaga jedynie, że skrypt jest czytelny.
AFH,
@AFH Duh Czuję się jak kretyn. Właściwie to myślałem, ale mój współpracownik powiedział, że już to zrobił: / Dzięki !!!
General_Twyckenham,
Czy wykonanie skryptu naprawiło coś? To mnie zaskakuje, ponieważ gdyby skrypt nie był wykonywalny, bash nie uruchomiłby go, więc nie dostałby się nawet do zwijania. Domyślam się, że zmienna środowiskowa https nie została wyeksportowana. . skryptNazwa.sh uruchamia skrypt w tej samej powłoce, więc skrypt widzi wszystkie zmienne środowiskowe. ./scriptName.sh uruchamia skrypt w podpowłoce, więc widzi tylko wyeksportowane zmienne środowiskowe. Spróbuj export https;./scriptName.shi zobacz, czy to coś zmieni.
blm,
Dlaczego istnieje $przed adresem URL? W bash wywołuje to lokalizację łańcucha; w innych skorupkach ... kto wie? Mówiąc o tym, twój skrypt naprawdę powinien zaczynać się od linii shebang #!/bin/bash.
Gordon Davisson,
@blm Dzięki za radę. Według wcześniejszego komentarza AFH .wydaje się, że plik wykonuje się, nawet jeśli można go tylko odczytać. Wykonanie skryptu naprawiło mój problem, ale spróbowałbym twoich sugestii, gdyby nie zadziałało.
General_Twyckenham,

Odpowiedzi:

0

Tak więc skrypt działa dobrze, gdy „go” źródle (przy użyciu „. Polecenia”), ale nie podczas wykonywania (przy użyciu „./command”).

Pierwszą rzeczą do sprawdzenia są uprawnienia. Upewnij się, że ma uprawnienia do wykonywania.

Inną rzeczą, którą znalazłem, która często naprawia ten typ sytuacji, jest oznaczenie pliku jako skryptu, wstawiając następujący wiersz w górnej linii pliku:

#! / bin / sh

Oczywiście, jeśli korzystasz z funkcji specyficznych dla powłoki, powinieneś określić, z której powłoki należy korzystać.

TOOGAM
źródło