Tạo 1 array và assign nó cho 1 variable cute:
hvn@archhvn: ~ () $ cute[0]=lam
hvn@archhvn: ~ () $ cute[1]=hiep
hvn@archhvn: ~ () $ echo ${cute}
lam
hvn@archhvn: ~ () $ echo ${cute[0]}
lam
hvn@archhvn: ~ () $ echo ${cute[1]}
hiep
hvn@archhvn: ~ () $ echo ${cute[@]}
lam hiep
hvn@archhvn: ~ () $ echo ${cute[*]}
lam hiep
Dấu @ và dấu * để chọn hết các phần tử trong array cute.
Khi không chỉ rõ index, array sẽ trả về phần tử (element) đầu tiên
Nếu phần tử không tồn tại, array sẽ trả về empty string.
Dùng ${XXX} để thay thế một variable bằng value của nó.
Parameter Expansion
The `$' character introduces parameter expansion, command substitution, or arithmetic expansion.
${parameter}
The value of parameter is substituted.
hvn@archhvn: ~ () $ echo ${cute[5]}
hvn@archhvn: ~ () $
Cách khác để tạo array : Dùng dấu () quanh các string phân cách bởi dấu space.
$ lang=("bash" "C" "python" "blah kute")Copy array:
hvn@archhvn: ~ () $ echo ${lang[*]}
bash C python blah kute
hvn@archhvn: ~ () $ lang2=("${lang[@]}")đoạn code copy trông có vẻ loằng ngoằng nhưng thực chất nó đơn giản: dấu () là syntax giúp tạo array đã nói trên, ${lang[@]} trả về tất cả các element trong array, “” để đảm bảo các element chứa dấu space được bảo toàn.
hvn@archhvn: ~ () $ echo ${lang2[3]}
blah kute
Đoạn code trên copy giá trị chứ không copy reference. Khi thay đổi element 1 của lang thành giá trị "nana", lang2 không bị ảnh hưởng
hvn@archhvn: ~ () $ lang[1]='nana'Hiển thị số element của array (thêm dấu # trước lang)
hvn@archhvn: ~ () $ echo ${lang[@]}
bash nana python blah kute
hvn@archhvn: ~ () $ echo ${lang2[@]}
bash C python blah kute
hvn@archhvn: ~ () $ echo ${#lang[@]}
4
Và cuối cùng là loop qua các phần tử của array, nếu không array cũng chỉ để làm cảnh :@)
hvn@archhvn: ~ () $ for i in "${lang[@]}"; do echo $i; done
bash
nana
python
blah kute
hvn@archhvn: ~ () $ for i in "${lang[*]}"; do echo $i; done
bash nana python blah kute
$ for i in ${lang[*]}; do echo $i; done
bash
nana
python
blah
kute
Có thể thấy kết quả khi dùng * và @ là khác nhau, và kết quả dùng @ là chính xác như mong đợi.
=> để loop qua 1 bash array dùng
for i in "${array_name[@]}"
No comments:
Post a Comment