Komunikat o błędzie sugeruje, że skrypt, który wywołujesz, ma osadzone \r
znaki , co z kolei sugeruje, że zawiera zakończenia linii w stylu Windows\r\n
zamiast oczekiwanych końcówek - \n
only line bash
.
W ramach szybkiego rozwiązania możesz usunąć \r
znaki. następująco:
sed $'s/\r$//' ./install.sh > ./install.Unix.sh
Uwaga: $'...'
Ciąg jest ANSI-C cudzysłowie obsługiwane bash
, ksh
i zsh
. Służy do upewnienia się, że \r
przed sed
wyświetleniem skryptu rozwijany jest do rzeczywistego znaku CR , ponieważ nie wszystkie sed
implementacje same obsługują\r
sekwencję ucieczki.
a potem biegnij
./install.Unix.sh --clang-completer
Jednak większe pytanie brzmi, dlaczego skończyło się na \r\n
plikach w stylu-- najprawdopodobniej dotyczy to również innych plików.
Być może korzystasz z Git w systemie Windows , gdzie typowa konfiguracja polega na przekonwertowaniu \n
podziałów wierszy tylko w stylu uniksowym \r\n
na podziały wierszy w stylu systemu Windows przy wypisywaniu plików i ponownej konwersji na \n
tylko podziały wierszy przy zatwierdzaniu .
Chociaż ma to sens w przypadku programowania w systemie Windows, przeszkadza w scenariuszach instalacji takich .
Aby Git pobierał pliki z końcówkami w stylu uniksowym w systemie Windows - przynajmniej tymczasowo - użyj:
git config --global core.autocrlf false
Następnie uruchom git clone
ponownie polecenia instalacji dotyczące .
Aby później przywrócić zachowanie Gita, uruchom git config --global core.autocrlf true
.
find . -type f -exec dos2unix {} \;
Szybkie polecenie konwersji zakończenia linii:
źródło
W moim przypadku miałem złą konfigurację gita. Dokumentacja git stwierdza:
Używam systemu Mac OS i dokładnie mam ten problem w jednym z moich projektów. Aby go rozwiązać, zwróciłem się
autocrlf
do tego,true
co było złe.Możesz sprawdzić
autocrlf
stan swojej konfiguracji git w ten sposób:Więc jeśli to powróci,
true
a problem wystąpi w repozytorium git, będziesz musiał zmienić tę konfigurację naw systemie Mac / Unix. Tylko dla projektów Windows, których możesz użyć
git config --global core.autocrlf false
W moim przypadku usunąłem repozytorium git i sklonowałem je ponownie, a potem wszystko działało ponownie zgodnie z oczekiwaniami.
Dowiedz się więcej na https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration
źródło
Jak mówią powyższe komentarze, dzieje się tak z powodu zakończeń linii okien. Aby rozwiązać ten problem, wykonaj następujące kroki
Dla Maca:
brew install dos2unix # Installs dos2unix Mac find . -type f -exec dos2unix {} \; # recursively removes windows related stuff
W systemie Linux:
sudo apt-get install -y dos2unix # Installs dos2unix Linux sudo find . -type f -exec dos2unix {} \; # recursively removes windows related stuff
I upewnij się, że Twoja konfiguracja git jest ustawiona w następujący sposób:
źródło
W moim przypadku miałem złą konfigurację gita. Dokumentacja git stwierdza:
Używam systemu Mac OS i dokładnie mam ten problem w jednym z moich projektów. Aby go rozwiązać, dostroiłem
autocrlf
siętrue
.Możesz sprawdzić
autocrlf
stan swojej konfiguracji git w ten sposób:Więc jeśli to powróci,
true
a problem wystąpi w repozytorium git, będziesz musiał zmienić tę konfigurację naktóry jest poprawny dla systemów Mac / Unix. Tylko dla projektów Windows, których możesz użyć
git config --global core.autocrlf false
W moim przypadku usunąłem repozytorium git i sprawdziłem je ponownie, a potem wszystko znów działało zgodnie z oczekiwaniami.
Dowiedz się więcej na https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration
źródło
Ten link pomógł mi rozwiązać problem. https://github.com/tiangolo/uwsgi-nginx-flask-docker/issues/127
Edytowałem mój plik .sh, zastępując wszystkie CRLF LF
źródło