${0}
é o primeiro argumento do script, ou seja, o nome ou caminho do script. Se você iniciar seu script como path/to/script.sh
, então ${0}
será exatamente essa sequência: path/to/script.sh
.
A parte %/*
modifica o valor de ${0}
. Isso significa: pegue todos os caracteres até /
seguido de um nome de arquivo. No exemplo acima, ${0%/*}
será path/to
.
Você pode ver isso em ação no seu shell:
$ x=path/to/script.sh
$ echo "${x%/*}"
path/to
Sh suporta muitos outros tipos de "substituição de parâmetros". Aqui está, por exemplo, como pegar o nome do arquivo em vez do caminho:
$ echo "${x##*/}"
script.sh
Em geral, %
e %%
sufixos de faixa, enquanto #
e ##
prefixos de faixa. Você pode ler mais sobre a substituição de parâmetros .