Pour commencer, si vous pouvez faire l'hypothèse que Bash est préinstallé (ce qui, à ma connaissance, est le cas sur tous les systèmes que vous répertoriez), utilisez le hashbang suivant pour être compatible:
#!/usr/bin/env bash
cela appelle tout ce qui bashse passe à configurer, que ce soit dans /binou /usr/local/bin.
Alors que sur la plupart des systèmes à travers une large gamme (y compris AIX, Solaris, plusieurs versions BSD), bashse sont retrouvés à différents endroits, se sont envtoujours retrouvés /usr/bin/env. L'astuce, cependant, n'est pas la mienne mais celle de l'auteur du Bash Cookbook.
Quoi qu'il en soit, oui, Bash vous permettrait d'utiliser des fonctionnalités "modernes" qui vous simplifient la vie.
Par exemple les doubles crochets:
[[ -f "/etc/debian_version" ]] && echo "This is a Debian flavor"
alors que dans les dialectes shell traditionnels, il faudrait recourir à:
test -f "/etc/debian_version" && echo "This is a Debian flavor"
mais le meilleur des crochets doubles est qu'ils autorisent les expressions régulières pour la correspondance. Le wiki Bash Hackers vous donnera de nombreuses astuces dans cette direction.
Vous pouvez également utiliser des expressions assez pratiques comme $((2**10))ou d'autres expressions arithmétiques en ligne avec la $((expression))syntaxe.
L'utilisation de backticks pour les sous-coquilles est correcte, bien qu'un peu dépassée. Mais les capacités d'imbrication des $(command ...)invocations sont bien plus pratiques car vous n'aurez pas à échapper à beaucoup de choses à différents niveaux de sous-shell.
Ce ne sont que quelques choses que Bash vous donne sur la shsyntaxe POSIX commune traditionnelle .
Mais si vous voulez plus de puissance sur le shell (pas seulement dans les scripts), jetez également un œil à zsh.
/binet/usr/bin. En conséquence, il est probablement préférable d'utiliser la#!/usr/bin/env <shname>portabilité de nos jours.