Widziałem kilka skryptów powłoki z następującym shebangiem:
#!/bin/bash -x -v
Jednak man bash
nie wyjaśnia, co te argumenty -x
i -v
oznaczają, jeśli są one należą do bash
w ogóle.
Co więc oznaczają te -x
i -v
(i inne możliwe argumenty)?
Z man bash
(tak, jest to duża strona podręcznika, zwykle wyszukiwanie w Google jest szybsze):
-x
Po rozwinięciu każdego prostego polecenia dla polecenia, przypadku, polecenia wyboru lub arytmetyki dla polecenia wyświetl rozwiniętą wartość PS4, a następnie polecenie i jego rozwinięte argumenty lub powiązaną listę słów.
Skutecznie: po uruchomieniu skryptu zostaną wyświetlone wszystkie działania wykonane w tym skrypcie. Więc wszystkie ifs, pętle i polecenia działają. Bardzo przydatne do debugowania.
-v
Drukuj wiersze wprowadzania powłoki podczas ich odczytywania. Po uruchomieniu skryptu wydrukuje cały skrypt podczas odczytu pliku. Gdy korzystasz z powłoki interaktywnie, wyświetli ona każde polecenie po naciśnięciu enter.
Powyższe cytaty pochodzą z objaśnienia set
wbudowanego polecenia w man bash
, który wyjaśnia również, że opcje dla set
mogą być również przekazywane jako argumenty (w wierszu shebang):
Opcje są domyślnie wyłączone, chyba że zaznaczono inaczej. Użycie
+
zamiast-
powoduje wyłączenie tych opcji. Opcje można również określić jako argumenty wywołania powłoki. Aktualny zestaw opcji można znaleźć w$-
. Zwracany status jest zawsze prawdziwy, chyba że napotkano niepoprawną opcję.
/-x
kilka razy dostaniesz się tamman
(właściwie toless
). Możesz powtórzyć ostatnie wyszukiwanie za pomocą/
+ strzałki w górę, ale musisz/
przewinąć stronę w dół, aby jakiekolwiek bieżące wyszukiwanie trafiło poza ekran ( wyszukiwanie do przodu,?
do tyłu).n
wyszukiwania do przodu iN
do tyłu.test -x
pod EXPRESSIONS WARUNKOWE (trzeci hit), nieset -x
.-x
inman bash
jest dość złym przypadkiem, więc uzyskanie bardziej szczegółowych informacji pomaga: jeśli użyjesz/^\s+-x\b
(= początek linii + biała spacja +-x
+ granica słowa), dostaniesz właściwy na 5 trafień ... byłoby to 4, gdyby nie fakt, żex
pasująX
... co prowadzi mnie do pytania, które chciałem zadać . W każdym razie, w / większość stron podręcznika,^\s+-x\b
wzorzec powinien najpierw działać dla przełączników.Strona bash człowiek robi aluzję, że te opcje są wyjaśnione dalej w dół, faktycznie, ale to łatwo przeoczyć.
Dlatego twój problem powinien w rzeczywistości brzmieć: Sekcja OPCJE strony podręcznika bash jest niekompletna. Odpowiedzią byłoby ich duplikowanie lub wyróżnienie pierwszej sekcji sekcji OPCJE:
Wreszcie, aby to zakończyć: są standardowymi opcjami dla dowolnej powłoki POSIX do pokazywania kodu skryptu podczas odczytu (
-v
) i uruchamiania (-x
). Dane wyjściowe pojawią się na stderr.źródło