Tôi muốn thiết lập các phần tử mảng với vòng lặp:mảng kịch bản Shell
for i in 0 1 2 3 4 5 6 7 8 9
do
array[$i] = 'sg'
done
echo $array[0]
echo $array[1]
Vì vậy, nó không hoạt động. Làm thế nào để ..?
Tôi muốn thiết lập các phần tử mảng với vòng lặp:mảng kịch bản Shell
for i in 0 1 2 3 4 5 6 7 8 9
do
array[$i] = 'sg'
done
echo $array[0]
echo $array[1]
Vì vậy, nó không hoạt động. Làm thế nào để ..?
Tháo gian:
array[$i]='sg'
Ngoài ra, bạn nên truy cập vào các yếu tố như *:
echo ${array[0]}
Xem ví dụ http://tldp.org/LDP/abs/html/arrays.html.
có vấn đề với echo tuyên bố của bạn: cung cấp cho ${array[0]}
và ${array[1]}
Nó sẽ làm việc nếu bạn đã tuyên bố biến của bạn như mảng, và in nó đúng cách:
declare -a array
for i in 0 1 2 3 4 5 6 7 8 9
do
array[$i]="sg"
done
echo ${array[0]}
echo ${array[1]}
Nhìn thấy nó trong hành động here .
HTH
Đưa tôi về vòng lặp rằng:
array=($(yes sg | head -n10))
Hoặc thậm chí đơn giản hơn:
array=(sg sg sg sg sg sg sg sg sg sg)
Xem http://ideone.com/DsQOZ đối với một số bằng chứng. Cũng lưu ý, bash 4+ readarray:
readarray array -t -n 10 < <(yes "whole lines in array" | head -n 10)
Thực tế, readarray là linh hoạt nhất, ví dụ: nhận được 10 PID đầu quá trình với bash trong tên vào mảng (có thể trả về một kích thước mảng < 10 nếu không có 10 quy trình như vậy):
readarray array -t -n 10 < <(pgrep -f bash)
thêm readarray, có vị trí cho phép dễ dàng nhúng khoảng trắng – sehe
# Declare Array
NAMEOFSEARCHENGINE=(Google Yahoo Bing Blekko Rediff)
# get length of an array
arrayLength=${#NAMEOFSEARCHENGINE[@]}
# use for loop read all name of search engine
for ((i=0; i<${arrayLength}; i++));
do
echo ${NAMEOFSEARCHENGINE[$i]}
done
Output:
Google
Yahoo
Bing
Blekko
Rediff
Bạn có biết lệnh seq không? bạn có thể thay thế các số của mình bằng $ (seq 0 9) – Miquel
@Miquel: hoặc chỉ '{0..9}'. –
Bạn cần phải cẩn thận, vì một số hệ vỏ không có mảng. Nếu bạn muốn ghi sh xách tay, bạn không thể sử dụng mảng ở tất cả. –