Szukaj…
Biała spacja podczas przypisywania zmiennych
Białe znaki mają znaczenie podczas przypisywania zmiennych.
foo = 'bar' # incorrect foo= 'bar' # incorrect foo='bar' # correct
Pierwsze dwa spowodują błędy składniowe (lub, co gorsza, wykonanie niepoprawnego polecenia). Ostatni przykład poprawnie ustawi zmienną $foo
na tekst „bar”.
Brak ostatniej linii w pliku
Standard C mówi, że pliki powinny kończyć się nową linią, więc jeśli EOF pojawi się na końcu linii, niektóre linie nie mogą pominąć tej linii. Jako przykład:
$ echo 'one\ntwo\nthree\c' > file.txt $ cat file.txt one two three $ while read line ; do echo "line $line" ; done < file.txt one two
Aby upewnić się, że działa to poprawnie w powyższym przykładzie, dodaj test, aby kontynuował pętlę, jeśli ostatni wiersz nie jest pusty.
$ while read line || [ -n "$line" ] ; do echo "line $line" ; done < file.txt one two three
Nieudane polecenia nie zatrzymują wykonywania skryptu
W większości języków skryptowych, jeśli wywołanie funkcji nie powiedzie się, może zgłosić wyjątek i zatrzymać wykonywanie programu. Polecenia bash nie mają wyjątków, ale mają kody wyjścia. Niezerowy kod wyjścia sygnalizuje awarię, jednak niezerowy kod wyjścia nie zatrzyma wykonywania programu.
Może to prowadzić do niebezpiecznych (choć zapewne wymyślonych) sytuacji takich jak:
#!/bin/bash
cd ~/non/existent/directory
rm -rf *
Jeśli polecenie cd
do tego katalogu nie powiedzie się, Bash zignoruje awarię i przejdzie do następnej komendy, usuwając katalog z miejsca, w którym uruchomiono skrypt.
Najlepszym sposobem na rozwiązanie tego problemu jest użycie polecenia set :
#!/bin/bash
set -e
cd ~/non/existent/directory
rm -rf *
set -e
mówi Bashowi, aby natychmiast opuścił skrypt, jeśli jakakolwiek komenda zwróci niezerowy status.