有點晚了答案,但如果你需要很多次,你可以使用分配
#!/bin/bash
assign() { eval "$1=($(printf '"%s" ' "[email protected]"))"; }
itemnum=0
assign item$((++itemnum)) 1 2 3 4
assign item$((++itemnum)) 'q w e r'
assign item$((++itemnum)) a "$itemnum cc" dd
#show the array members enclosed in ''
echo "item1:" $(printf "'%s' " "${item1[@]}")
echo "item2:" $(printf "'%s' " "${item2[@]}")
echo "item3:" $(printf "'%s' " "${item3[@]}")
打印
item1: 'item1' '1' '2' '3' '4'
item2: 'item2' 'q w e r'
item3: 'item3' 'a' '3 cc' 'dd'
的功能
或簡單
echo ${item1[@]}
echo ${item2[@]}
echo ${item3[@]}
個
打印
item1 1 2 3 4
item2 q w e r
item3 a 3 cc dd
,如果你想排除,從陣列(該ITEMNAME)的第一個元素,使用
assign() { var="$1"; shift 1; eval "$var=($(printf '"%s" ' "[email protected]"))"; }
n=0
assign item((++n)) 1 2 3 4
echo "item1 contains only: $item1[@]}"
打印
item1 contains only: 1 2 3 4
其中的bash的釋放,特別是?在4.3和更新的版本中,有一個'namevar'特性(從ksh借用)可以實現更強大的實現。 – 2014-09-22 20:09:29