Portál AbcLinuxu, 30. dubna 2025 17:37
$(($VAL1-$VAL2))Tedy vyskytovaly dodnes, když jsem zjistil, že pokud je busyboxu definováno VAL2=-1, tak celý skript padne na chybném výrazu (dvě mínus vedle sebe). Zajímavé, že v bashi to fungovalo. BTW jsem ani nevěděl, že se nemusí ty "$" uvnitř "$(())" u proměnných používat. Poslal jsem tedy bug report (musím pochválit, opraveno během hodiny), ale ještě jsem se v tom vrtal (teď už v bashi) a následující chování je taky vtipné i když nejspíš korektní:
$((x+++y)) #inkrementuje x $((x+++1)) #inkrementuje x $((1+++y)) #inkrementuje y $((1+++1)) #funguje jako součet = 2, nejspíš to postinkrementuje tu první "1"Ale nejvíc jsem byl překvapený po tom, co jsem z legrace vykonstruoval frankensteinové monstrum a ono se spustilo!:
echo $x $((0 + --++--++--x--++--++-- + 0)) $xNa mém bashi (GNU 4.4.12(1)-release) se překvapivě provede (s x=0). Schválně si ale v komentech bez spuštění tipněte, jaký výsledek to vyhodí. Na mém stroji mi přijde výsledek nelogický. P.S. Jestli to je chyba bashe, tak by se mě hodila pomoc, jak to vysvětlit v bugreportu pomocí priority operátorů
Tiskni
Sdílej:
Mám ještě jednu vtipnější :-P.Daj to sem :)
Ten reddit je asi tohle, že?Jj to je ono.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.