Mam skrypt bash, który wysyła kilka powiadomień do Slacka za pośrednictwem CURL i odradza oczekiwany skrypt.
Kiedy uruchamiam skrypt za . scriptName.sh
jego pośrednictwem , działa dobrze, ale kiedy go uruchamiam, wpisując ./scriptName.sh
częś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"
chmod a+x scriptName.sh
..
Polecenie wymaga jedynie, że skrypt jest czytelny.export https;./scriptName.sh
i zobacz, czy to coś zmieni.$
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
..
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.Odpowiedzi:
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:
Oczywiście, jeśli korzystasz z funkcji specyficznych dla powłoki, powinieneś określić, z której powłoki należy korzystać.
źródło