Jeśli piszesz skrypty w bashu, jest duża szansa, że robisz to źle.
Nagrałem film, aby pokazać zły i dobry przykład pisania skryptów, bo te skrypty zapewne "po cichu" utrzymują świat. Mimo, że łatwo rozpocząć pisanie takich skryptów, warto jednak użyć od początku odpowiedniego podejścia, aby nas później nie zaskoczyło ich nie do końca zaplanowanego zachowanie.
d.....z z- #
- #
- #
- #
- #
- #
- 117
Komentarze (117)
najlepsze
@less_is_more: no to dig deeper - touch używa funkcjo fd reopen z flagą O NONBLOCK więc procesy mogą tworzyć ten sam deskryptor pliku a kernel zajmie się kolejnością.
Gdyby touch używał open_excl, operacja tworzenia tego samego pliku przez kilka procesów byłaby niemożliwa.
Temat dotyczy skryptowania w bashu, prawdopodobnie nie ma dostępnego domyślnie w dystrybucjach polecenia, które pozwala na
Trochę tak jak PHP..
jeden zrobi dobrze, drugi wytknie błędy, to się poprawi - o ile będą tłumaczyć co i dlaczego robią, mogą ze sobą dojść do porozumienia i wyciągnąć wnioski co jest najlepszym rozwiązaniem
do lekarzy też się chodzi posłuchać kilku opinii, a nie jednego
-f
jest zbyt nonszalnckie - edytujesz w tym jednym miejscu i masz spokój.Natomiast nie
mkdir
to się nadaje, lokalnie jest atomiczne, więc ja tu nie widzę przeciwwskazań, kwestia uzgodnień w projekcie lub własnego podejścia. Przy czym przy samym locku chodziło mi o coś innego, że możemy go "zgubić" przez swoją niefrasobliwość w pisaniu skryptów, a nie pokazywałem tam jedyny słuszny koncept lockowania.Ja wiem, że skrypty świat utrzymują, jak
main
i poleganie na *globalnym scope* to ogólnie w dowolnym języku słaby pomysł.Ponadto mając funkcję
main
z wywołaniem na końcu pliku powoduje, że każda funkcja wie o każdej.bash
rozróżnia definiowanie od wywoływania, dlatego można robić wtedy "skrośne" zależności między funkcjami.https://unix.stackexchange.com/questions/313256/why-write-an-entire-bash-script-in-functions/313561
source
bez "wmiksowywania" globalnych zmiennych.Tak na serio, to dobrze zorganizowana "aplikacja"
bash
może robić to coPython
owa czyperlowa
:>Wszystko pewnie zależy od skali (i poziomu szaleństwa/pasji), czy może przenoszalności.
Inny styl będzie mieć skrypt pisany na rzecz władowania przy .bashrc, inaczej przy takim al'a programiku, inaczej przy pisaniu serwera HTTP w bashu xD