Câu trả lời:
VotePedro="Vote for Pedro"
votePedroArray=(${VotePedro})
votePedroArray=("Vote" "For" "Pedro")
sẽ cung cấp cho bạn một mảng có độ dài 3. Và ${VotePedro}
giống như $VotePedro
trong bối cảnh này. Để truy cập các thành phần mảng riêng lẻ, bạn có thể sử dụng dấu ngoặc tương tự như những gì bạn đã có cho vòng lặp for trong câu hỏi của mình. ví dụ: ${votePedroArray[0]}
phần tử đầu tiên trong mảng ("Bình chọn" cho ví dụ này)
Khi bạn để lại một mở rộng biến không được trích dẫn, ví dụ $VotePedro
, các bước sau đây được thực hiện:
IFS
biến; theo mặc định đó là không gian, tab và dòng mới.Do đó, bạn có thể chia một chuỗi thành các phần tử được phân tách bằng khoảng trắng (giả sử giá trị mặc định là IFS
) bằng cách tắt mở rộng ký tự đại diện và mở rộng một biến có giá trị đó là chuỗi bên ngoài dấu ngoặc kép.
VotePedro="Vote for Pedro"
set -f
votePedroArray=($VotePedro)
set +f
for i in "${votePedroArray[@]}"; do …
Bạn có thể trực tiếp thực hiện việc phân chia tại điểm sử dụng; điều này sẽ hoạt động ngay cả trong các shell như sh không có mảng:
VotePedro="Vote for Pedro"
set -f
for i in ${votePedro}; do
set +f
…
done
set +f