Meg ezt sem:
8. let "i += 1"
Ha valaki /bin/bash -t ír, akkor nyugodtan használjon bash specifikus dologat. De ennek csak akkor van igazán értelme, ha az a valami másban nem elérhető - más, esetleg a bashban is meglevő formában sem. Mondjuk a saját, esetleg mások életét tudja megkönnyíteni azzal, ha azokat a dolgokat, amik más shellben is megvannak, abban a formában írja, ami a másik shellnek is megfelelő. Azaz sajnos az eddigi felsorolásból a 2. (meg nyilván az 1.) az, amit használva később nem kell módosítani semmit - ha például egy indító script-ről beszélünk, akkor egy bash - dash csere után sincs gond. Pár napja már leírtam itt valahol, én elsősorban olyasmire gondolok, mint
- "function x { ...; }" vagy "x() { ...; }" használata a bash-ban épp még elfogadott "function x() { ...; }" helyett
- "typeset -i i" írása a "declare -i i" helyett; csak arra kell gondolni, hogy írhatnám a sokkal olvashatóbb "integer i"-ként is, akkor meg a bash kapna tőle hülyét, pedig maga a lehetőség Korn-shellben ugye adott. Hasonló okokból én jobb szeretem az "export X"-et a "typeset -x X" (vagy akár "declare -x X" helyett).
- ". fnév" a "source fnév" helyett
- továbbmegyek, mivel a for i in {1..10} az egyéb általam használt rendszereken nem megy, én sosem írok így ciklust, noha nagyon kényelmes lenne; helyette leírom a sokkal hosszabb, de hordozható while ciklust. És mivel a seq is leginkább csak Linuxon létező parancs, ezért nem írom így se: for i in $(seq 1 10) .
(Most jól meglepődtem egyébként, mert ezt találtam a saját gépemen:
"The seq command first appeared in Plan 9 from Bell Labs. A seq command appeared in NetBSD 3.0, and ported to FreeBSD 9.0. This command was based on the command of the same name in Plan 9 from Bell Labs and the GNU core utilities. The GNU seq command first appeared in the 1.13 shell utilities release."
Szóval lassan akár FreeBSD-n is használhatnám, de nem teszem. Anno a BSD-specifikus jot parancsot felhasználva csináltam saját seq-et, ujjgyakorlatként.)
(Ja, szerintem alig akad olyasmi, amit POSIX-shellben nem lehet megcsinálni, bash-ban meg igen. A többsége a bashizmeknek szimplán szokás kérdés. (Mint fenti {1..10} , vagy pl a &>fnév formájú átirányítás.)
Azaz: kis odafigyléssel elég hamar meg lehet szokni, hogy úgy írja meg az ember, hogy később nem fut bele inkompatibilitási dolgokba. Ha meg valaki kényelmes most, később esetleg lesznek kényelmetlenségei. Egy kedves ismerős ezt úgy szokta a fejemhez vágni: a kompatibilitás látszólagossága okán én folyton hüvelykszorítóban dolgozom, ő meg kényelmesen él. Ma. Holnap meg esetleg mégse.