Bạn hoàn toàn không cần echo
lệnh, chỉ cần sử dụng Chuỗi ở đây :
text=$(tr -d ' ' <<< "$text")
Chỉ vì tò mò tôi đã kiểm tra xem một công việc tầm thường như vậy mất bao nhiêu thời gian cho các công cụ khác nhau. Dưới đây là kết quả được sắp xếp từ chậm nhất đến nhanh nhất:
abc="some text with spaces"
$ time (for i in {1..1000}; do def=$(echo $abc | tr -d ' '); done)
0.76s user 1.85s system 52% cpu 4.976 total
$ time (for i in {1..1000}; do def=$(awk 'gsub(" ","")' <<< $abc); done)
1.09s user 2.69s system 88% cpu 4.255 total
$ time (for i in {1..1000}; do def=$(awk '$1=$1' OFS="" <<< $abc); done)
1.02s user 1.75s system 69% cpu 3.968 total
$ time (for i in {1..1000}; do def=$(sed 's/ //g' <<< $abc); done)
0.85s user 1.95s system 76% cpu 3.678 total
$ time (for i in {1..1000}; do def=$(tr -d ' ' <<< $abc); done)
0.73s user 2.04s system 85% cpu 3.244 total
$ time (for i in {1..1000}; do def=${abc// /}; done)
0.03s user 0.00s system 59% cpu 0.046 total
Hoạt động vỏ thuần túy chắc chắn là nhanh nhất không có gì đáng ngạc nhiên, nhưng điều thực sự ấn tượng là nó nhanh hơn 100 lần so với lệnh chậm nhất!