Anda tidak perlu echo
perintah sama sekali, cukup gunakan Here String sebagai gantinya:
text=$(tr -d ' ' <<< "$text")
Hanya untuk rasa ingin tahu, saya memeriksa berapa banyak waktu yang diperlukan untuk tugas sepele untuk alat yang berbeda. Berikut adalah hasil yang diurutkan dari yang paling lambat ke yang paling cepat:
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
Operasi shell murni jelas merupakan yang tercepat yang tidak mengejutkan, tetapi yang benar-benar mengesankan adalah lebih dari 100 kali lebih cepat daripada perintah yang paling lambat!