Ostatnio natknąłem się na wieloliniowy typ komentarza, którego nigdy wcześniej nie widziałem - oto przykład skryptu:
echo a
#
: aaa
: ddd
#
echo b
To wydaje się działać, nawet vim
podkreśla składnię. Jak nazywa się ten styl komentowania i jak znaleźć więcej informacji na jego temat?
bash
shell-script
Wiesław Herr
źródło
źródło
CommentedOutBlock() { echo "test"; }
Odpowiedzi:
To nie jest komentarz wieloliniowy.
#
to komentarz jednowierszowy.:
(dwukropek) wcale nie jest komentarzem, ale raczej wbudowaną komendą powłoki, która jest w zasadzie NOP , operacją zerową, która nie robi nic oprócz powrotu true, jaktrue
(a zatem ustawienie$?
na 0 jako efekt uboczny). Ponieważ jednak jest to polecenie, może akceptować argumenty, a ponieważ ignoruje swoje argumenty, w większości przypadków powierzchownie działa jak komentarz. Głównym problemem związanym z tą kludge jest to, że argumenty są wciąż rozszerzane, co prowadzi do wielu niezamierzonych konsekwencji. Na argumenty nadal mają wpływ błędy składniowe, przekierowania są nadal wykonywane, więc: > file
zostaną obciętefile
, a: $(dangerous command)
podstawienia nadal będą działać.Najmniej zaskakujący całkowicie bezpieczny sposób wstawiania komentarzy w skryptach powłoki to
#
. Trzymaj się tego nawet w przypadku komentarzy wieloliniowych. Nigdy nie próbuj (ab) używać:
do komentowania. Nie ma dedykowanego wieloliniowego mechanizmu komentowania w powłoce, który byłby analogiczny do postaci ukośnej gwiazdki/* */
wC
podobnych językach.Ze względu na kompletność, ale nie dlatego, że jest to zalecana praktyka, wspomnę, że można użyć dokumentów tutaj do robienia wieloliniowych „komentarzy”:
źródło
<<
linii - to wyłącza podstawianie i rozszerzanie.:
elementami, które powinny być komentarzami, spowoduje dodatkowe zużycie pamięci RAM / procesora. Nie będzie to miało znaczenia dla prostych rzeczy na pulpicie, ale jeśli jest to wykonywane setki lub tysiące razy na sekundę, nic nie zrobisz, potężnie szybko .: <<=cut
umożliwia napisanie POD w skryptach powłoki, zobacz ten przykład, aby uzyskać szczegółowe informacje . Umożliwia to użycieperldoc script.sh
. Jednak wieloliniowy komentarz pokazany w tej odpowiedzi powinien zdecydowanie być blokiem komentarza (każda linia zaczyna się od#
).To nie jest żaden styl komentowania.
:
wbudowaną komenda robi nic; jest nadużywane za komentowanie tutaj.źródło
We wczesnych powłokach dwukropek był jedynym sposobem na tworzenie komentarzy.
Nie jest to jednak prawdziwy komentarz, ponieważ linia jest analizowana dokładnie w taki sam sposób, jak każde inne polecenie, co może mieć skutki uboczne. Na przykład:
(Czasami okrężnica jest używana wyłącznie w celu wywołania tych skutków ubocznych, ale wtedy nie jest używana jako komentarz).
Czasami wygodnie jest użyć dwukropka, aby skomentować część skryptu:
Jest to wielka oszczędność czasu w porównaniu z poprzednimi wierszami
#
, szczególnie jeśli komentowanie jest tylko tymczasowe.źródło
/* */
i nie zaczynaj<!-- -->
!Jeśli Twój komentarz znajduje się na końcu skryptu, możesz to zrobić w następujący sposób:
źródło