Mi dash
script toma un parámetro en forma de hostname:port
, es decir:
myhost:1234
Mientras que el puerto es opcional, es decir:
myhost
Necesito leer el host y el puerto en variables separadas. En el primer caso, puedo hacer:
HOST=${1%%:*}
PORT=${1##*:}
Pero eso no funciona en el segundo caso, cuando se omitió el puerto; echo ${1##*:}
simplemente devuelve el nombre de host, en lugar de una cadena vacía.
En Bash, podría hacer:
IFS=: read A B <<< asdf:111
Pero eso no funciona dash
.
¿Puedo dividir la cadena en :
en el tablero, sin invocar programas externos ( awk
, tr
, etc.)?
%%
hace codicioso (en oposición a %
), por lo que en realidad hace esto, al menos en parte; que no funcionaría con ##
.