Mój dashskrypt przyjmuje parametr w postaci hostname:portnp .:
myhost:1234
Natomiast port jest opcjonalny, tj .:
myhost
Muszę odczytać hosta i port w osobne zmienne. W pierwszym przypadku mogę wykonać:
HOST=${1%%:*}
PORT=${1##*:}
Ale to nie działa w drugim przypadku, gdy port został pominięty; echo ${1##*:}po prostu zwraca nazwę hosta zamiast pustego ciągu.
W Bash mogłem:
IFS=: read A B <<< asdf:111
Ale to nie działa dash.
Mogę podzielić na ciąg :w desce rozdzielczej, bez odwoływania się do zewnętrznych programów ( awk, tr, itd.)?
%%sprawia, że jest chciwy (w przeciwieństwie do %), więc faktycznie robi to, przynajmniej częściowo; to nie zadziała ##.