Chociaż nie odpowiadam na pierwotne pytanie dotyczące polecenia no-op, wiele (jeśli nie większość) problemów, gdy ktoś może pomyśleć „ w tej gałęzi nie muszę nic robić ”, można ominąć, po prostu przebudowując logikę , aby ta gałąź wygrała nie występuje.
Postaram się podać ogólną zasadę na przykładzie PO
nic nie rób, gdy $ a jest większe niż "10", wypisz "1", jeśli $ a jest mniejsze niż "5", w przeciwnym razie wypisz "2"
musimy unikać gałęzi, w której $a
dostaje się więcej niż 10, aby $a < 10
warunek ogólny można było zastosować do każdego kolejnego warunku.
W ogólnym ujęciu, kiedy mówisz zrobić nic gdy X , a następnie go przeformułować jak uniknąć oddział, gdzie X . Zwykle możesz sprawić, że unikanie się wydarzy, po prostu negując X i stosując go do wszystkich innych warunków.
Zatem przykład PO z zastosowaną regułą można przekształcić w następujący sposób:
if [ "$a" -lt 10 ] && [ "$a" -le 5 ]
then
echo "1"
elif [ "$a" -lt 10 ]
then
echo "2"
fi
Tylko odmiana powyższego, obejmująca wszystko w $a < 10
stanie:
if [ "$a" -lt 10 ]
then
if [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
fi
(W tym konkretnym przykładzie restrukturyzacja @Flimzys jest z pewnością lepsza, ale chciałem podać ogólną zasadę dla wszystkich ludzi, którzy szukają sposobu na nic nie robić.)
true
. Jest wbudowany w powłokę i nic nie robi.