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 bash
se passe à configurer, que ce soit dans /bin
ou /usr/local/bin
.
Alors que sur la plupart des systèmes à travers une large gamme (y compris AIX, Solaris, plusieurs versions BSD), bash
se sont retrouvés à différents endroits, se sont env
toujours 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 sh
syntaxe POSIX commune traditionnelle .
Mais si vous voulez plus de puissance sur le shell (pas seulement dans les scripts), jetez également un œil à zsh
.
/bin
et/usr/bin
. En conséquence, il est probablement préférable d'utiliser la#!/usr/bin/env <shname>
portabilité de nos jours.