Mảng Bash có dạng
bash_arr=('a', 'b', 'c')
Trong khi mảng Json có dạng
json_arr=["a", "b", "c"]
# biểu diễn dạng chuỗi
json_arr='["a", "b", "c"]'
Vì json_arr thường biểu diễn dưới dạng chuỗi nên cần dùng echo để chuyển cho jq phân tích.
Mỗi dạng mảng có những tiện ích hỗ trợ khác nhau, mảng Json chủ yếu dùng jq. Chuyển đổi qua lại giữa 2 dạng mảng để tận dụng lợi thế của từng loại, cũng khá đơn giản.
- Chuyển mảng Bash sang mảng Json
j_arr=$(echo "${bash_arr[@]}" | jq -R '.' | jq -s '.')
- Chuyển mảng Json sang mảng Bash
b_arr=( $(echo $json_arr | jq '.[]') )
- Tính chiều dài của mảng
echo ${#bash_arr[@]}
echo $json_arr | jq '. | length'
- Thêm phần tử vào cuối mảng
bash_arr+=( 'd' ) json_arr=
$(echo $json_arr | jq '. += ["d"]'
)
- Xóa phần tử index 2, bắt đầu từ chỉ số 0
unset bash_arr[2]
json_arr=$(echo $json_arr | jq '. | del (.[2])')