Meu dash
script usa um parâmetro na forma de hostname:port
, ou seja:
myhost:1234
Considerando que a porta é opcional, ou seja:
myhost
Eu preciso ler o host e a porta em variáveis separadas. No primeiro caso, eu posso fazer:
HOST=${1%%:*}
PORT=${1##*:}
Mas isso não funciona no segundo caso, quando a porta foi omitida; echo ${1##*:}
simplesmente retorna o nome do host, em vez de uma string vazia.
No Bash, eu poderia fazer:
IFS=: read A B <<< asdf:111
Mas isso não funciona dash
.
Posso dividir corda no :
no traço, sem invocar programas externos ( awk
, tr
, etc.)?
%%
torna ganancioso (ao contrário de %
), então ele realmente faz isso, pelo menos em parte; não iria funcionar ##
.