Z dokumentacji bash :
(list)
lista jest wykonywana w środowisku podpowłoki (patrz ŚRODOWISKO WYKONYWANIA POLECEŃ poniżej). Zmienne przypisania i wbudowane polecenia, które wpływają na środowisko powłoki, nie pozostają aktywne po zakończeniu polecenia. Status powrotu to status wyjścia z listy.
Innymi słowy, upewniasz się, że cokolwiek dzieje się na „liście” (jak a cd
), nie ma wpływu poza (
i )
. Jedyną rzeczą, która będzie przeciekać jest kod zakończenia ostatniego polecenia lub z set -e
pierwszego polecenia, który generuje błąd (inne niż kilka, takich jak if
, while
itp)
((expression))
Wyrażenie ocenia się zgodnie z zasadami opisanymi poniżej w części OCENA ARYTETYCZNA. Jeśli wartość wyrażenia jest różna od zera, zwracanym statusem jest 0; w przeciwnym razie zwracany jest status 1. Jest to dokładnie równoważne z wyrażeniem „wyrażenie”.
To rozszerzenie bash pozwala na matematykę. Jest to nieco podobne do używania expr
bez wszystkich ograniczeń expr
(takich jak wszędzie spacje, ucieczka *
itp.)
[[ expression ]]
Zwraca status 0 lub 1 w zależności od oceny wyrażenia warunkowego. Wyrażenia składają się z liczb podstawowych opisanych poniżej w części WYRAŻENIA WARUNKOWE. Dzielenie wyrazów i interpretacja nazw ścieżek nie są wykonywane na słowach pomiędzy [[a]]; Wykonywane jest interpretacja tyldy, interpretacja parametrów i zmiennych, interpretacja arytmetyczna, podstawianie poleceń, podstawianie procesów i usuwanie cytatów. Operatory warunkowe, takie jak -f, muszą być niecytowane, aby można je było uznać za podstawowe.
W przypadku użycia z [[, operatory <i> sortują leksykograficznie przy użyciu bieżących ustawień regionalnych.
To oferuje zaawansowany test do porównywania ciągów, liczb i plików, trochę jak test
oferty, ale bardziej wydajny.
[ expr ]
Zwraca status 0 (prawda) lub 1 (fałsz) w zależności od oceny wyrażenia warunkowego wyraż. Każdy operator i oper musi być osobnym argumentem. Wyrażenia składają się z liczb podstawowych opisanych powyżej w części WYRAŻENIA WARUNKOWE. test nie akceptuje żadnych opcji, ani nie przyjmuje i ignoruje argumentu - jako oznaczającego koniec opcji.
[...]
Ten dzwoni test
. W rzeczywistości w dawnych czasach [
istniał symboliczny link do test
. Działa tak samo i masz te same ograniczenia. Ponieważ plik binarny zna nazwę, z którą został uruchomiony, program testowy może analizować parametry, dopóki nie znajdzie parametru ]
. Zabawne sztuczki uniksowe.
Należy pamiętać, że w przypadku bash
, [
i test
są wbudowane funkcje (jak wspomniano w komentarzu), jeszcze dość dużo obowiązują te same ograniczenia.