Для початку, якщо ви можете зробити припущення, що 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>
для перенесення в наші дні.