Na początek, jeśli możesz założyć, że Bash jest wstępnie zainstalowany (co, zgodnie z moją wiedzą, dotyczy wszystkich wymienionych systemów), użyj następującego hashbangu, aby być kompatybilnym:
#!/usr/bin/env bash
wywołuje to wszystko bash
, co dzieje się w konfiguracji, bez względu na to, czy jest w, /bin
czy w /usr/local/bin
.
Podczas gdy na większości systemów w szerokim zakresie (w tym AIX, Solaris, kilka odmian BSD), bash
trafiał do różnych lokalizacji, env
zawsze trafiał do /usr/bin/env
. Sztuczka nie jest jednak moja, ale autorstwa autora książki kucharskiej Bash.
W każdym razie, tak, Bash pozwoliłby ci użyć niektórych „nowoczesnych” funkcji, które ułatwią ci życie.
Na przykład podwójne nawiasy kwadratowe:
[[ -f "/etc/debian_version" ]] && echo "This is a Debian flavor"
mając na uwadze, że w tradycyjnych dialektach skorupowych trzeba by uciekać się do:
test -f "/etc/debian_version" && echo "This is a Debian flavor"
ale najlepsze w podwójnych nawiasach jest to, że pozwalają na dopasowanie wyrażeń regularnych. Bash Hakerzy Wiki daje wiele sztuczek w tym kierunku.
Możesz także użyć całkiem wygodnych wyrażeń, takich jak $((2**10))
lub inne wyrażenia arytmetyczne zgodne ze $((expression))
składnią.
Używanie backsicków do podpowłok jest w porządku, choć nieco przestarzałe. Ale możliwości zagnieżdżania $(command ...)
wywołań są znacznie wygodniejsze, ponieważ nie będziesz musiał uciekać przed wieloma rzeczami na różnych poziomach podpowłoki.
To tylko kilka rzeczy, które oferuje Bash w stosunku do tradycyjnej sh
składni POSIX .
Ale jeśli chcesz więcej mocy na powłoce (nie tylko w skryptach), spójrz także zsh
.
/bin
i/usr/bin
. W związku z tym prawdopodobnie lepiej jest teraz używać#!/usr/bin/env <shname>
do przenoszenia.