Для початку, якщо ви можете зробити припущення, що Bash попередньо встановлений (що, наскільки мені відомо, у всіх системах, які ви перераховуєте), використовуйте наступний хешбанг для сумісності:
#!/usr/bin/env bash
це викликає те, що bashстанеться налаштованим, незалежно від того, знаходиться він /binчи /usr/local/bin.
Хоча для більшості систем у широкому діапазоні (включаючи AIX, Solaris, кілька BSD-ароматів), які bashопинялися в різних місцях, envзавжди опинялися в/usr/bin/env . Хитрість, однак, не моя, а авторка кухарської книги Bash.
У будь-якому випадку, так, Bash дозволив би використовувати деякі "сучасні" функції, які полегшують ваше життя.
Наприклад, подвійні дужки:
[[ -f "/etc/debian_version" ]] && echo "This is a Debian flavor"
тоді як у традиційних діалектах оболонок вам доведеться вдатися до:
test -f "/etc/debian_version" && echo "This is a Debian flavor"
але найкраще в подвійних дужках - це те, що вони дозволяють регулярні вирази для відповідності. Bash Hackers Wiki дасть вам багато трюків в цьому напрямку.
Ви також можете використовувати досить зручні вирази, як $((2**10))або інші арифметичні вирази, вбудовані в$((expression)) синтаксис.
Використання зворотних посилань для передплатників добре, хоч і трохи застаріле. Але можливості гніздування$(command ...) викликів набагато зручніші, оскільки вам не доведеться уникати багатьох речей на різних рівнях нижньої оболонки.
Це лише кілька речей, які Bash дає вам над традиційним загальним shсинтаксисом POSIX .
Але якщо ви хочете більше енергії на оболонці (не тільки в сценаріях), також погляньте zsh.
/binі/usr/bin. У результаті цього, напевно, краще використовувати їх#!/usr/bin/env <shname>для перенесення в наші дні.