dash
Kịch bản của tôi có một tham số ở dạng hostname:port
, nghĩa là:
myhost:1234
Trong khi đó cổng là tùy chọn, nghĩa là:
myhost
Tôi cần đọc máy chủ và cổng thành các biến riêng biệt. Trong trường hợp đầu tiên, tôi có thể làm:
HOST=${1%%:*}
PORT=${1##*:}
Nhưng điều đó không hoạt động trong trường hợp thứ hai, khi cổng bị bỏ qua; echo ${1##*:}
chỉ cần trả về tên máy chủ, thay vì một chuỗi rỗng.
Ở Bash, tôi có thể làm:
IFS=: read A B <<< asdf:111
Nhưng điều đó không làm việc trong dash
.
Tôi có thể chia nhỏ chuỗi trên :
trong dấu gạch ngang, mà không viện dẫn chương trình bên ngoài ( awk
, tr
, vv)?
%%
làm cho nó tham lam (trái ngược với %
), vì vậy nó thực sự làm điều này, ít nhất là một phần; nó sẽ không hoạt động với ##
.