Pre cely zoznam 'hlavnych' rozdielov, pozrite Appendix B v bash manuali http://www.gnu.org/software/bash/manual/html_node/Major-Differences-From-The-Bourne-Shell.html - Arrays name[index]=value => in shell: $A_1 $A_2 - C-like for for (( expr1; expr2; expr3 )) => in shell: eval POLE_$INDEX=3 - zjednodusene podmienkovanie pomocou [[ ]] a (( )) [[ "$string" == *[sS]tring* && $num -eq 3 ]] if (( $num <= 5 )); then => in shell: [ ], -o -a - sikovne operatory (++, --, +=) => in shell: x=`expr $x + 1`, a pod. - parameter expansion ${x:6:1} (substring), ${x:-5} (default value) a jine: http://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html => in shell: cut -c6-6 - (very weird but) date +%s is not portable => portabilne: s trochou nadsazky pokud chceme opravdu Unix timestamp a OPRAVDU to na nasem zarizeni nejde pomoci %s), dle http://www.etalabs.net/sh_tricks.html secs=$((`TZ=GMT0 date +"((%Y-1600)*365+(%Y-1600)/4-(%Y-1600)/100+(%Y-1600)/400+%j-135140)*86400+%H*3600+%M*60+%S"`)) - ked sme pri tom, tak VELMI stare shells (ktore ani sami nemusia byt POSIX standardne) nebudou podporovat ani $() command substitution a $(()) arithmetic expansion, a funguje jenom ``, eval, ... toto a date +%s su priklady uz trochu prehnanej snahy o kompatibilitu, kedy (snad) uz vsetky systemy s ktorymi budete robit tieto extensions poznaju - za zmienku stoji skor, ze je dobre vediet co je v POSIX standardu a co nie. Bash ma vela sikovnych nastrojov co nie su v POSIX standarde. bash vsak podporuje --posix prepinac, ktory spusti vas skript podla POSIX pravidiel