W artykule tym porównuję budowę skryptów pisanych w językach bash, perl, php, python.
Skrypt najlepiej jeżeli ma rozszerzenie .sh, nazwa np. script.sh
Budowa skryptu wyglądać może następująco:
1 2 3 4 5 6 |
#!/bin/bash # comment # source /path/to/file echo "Hello World" |
Gdzie:
#
to znak rozpoczynający komentarz
source /path/to/file
to wczytanie pliku z dowolnym innym kodem basha.
Roszezrzenie .py, nazwa np. script.py
1 2 3 4 5 |
#!/usr/bin/python # comment print "Hello World" |
Rozszerzenie .pl, np. nazwa script.pl
1 2 3 4 5 6 7 |
#!/usr/bin/perl -w # comment # require /path/to/file.pl; # use some_libs; print "Hello World \n"; |
Gdzie:
#
to znak rozpoczynający komentarz
require /path/to/file.pl
to wczytanie pliku z dowolnym innym kodem perla.
Rozszerzenie .php, nazwa np. script.php
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/usr/bin/php <?php # comment1 // comment2 /* comment3 ... */ # include /path/to/file.php; print "Hello World \n"; ?> |
Gdzie:
#, //, /* */
to znaki komentarza
include/path/to/file.php
to wczytanie pliku z dowolnym innym kodem php.
Bash | Python | Perl | PHP | |
Średniki na końcu linii | – | – | + | + |
Możliwe przyczyny nie działania skryptów:
- źle ustawiona ścieżka do interpretera,
- źle podana ścieżka do pliku zawierającego skrypt,
- niepoprawne zainstalowany interpreter,
- (w systemach UNIX) źle ustawione prawa dostępu do pliku (aby nadać skryptowi prawo wykonywalności należy użyć polecenia chmod +x).
Uwaga. Zamiast bezpośrednich ścieżek do interpreterów można używać zapisów:
1 2 3 4 5 |
#!/usr/bin/env bash #!/usr/bin/env python #!/usr/bin/env perl #!/usr/bin/env php #!/usr/bin/env ruby |
Zmienne: bash, python, perl, php, ruby muszą być jednak zdefiniowane w zmiennej systemowej $PATH
. Zaletą takiego rozwiązania jest większa przenośność skryptów. Wadą jest to, że takich skryptów nie można uruchamiać z argumentami. Ponadto cron uruchamiany na koncie zwykłego użytkownika działa w ograniczonym środowisku i może mieć problem z tak zdefiniowanym interpreterem danego skryptu.