2013-04-05 61 views
-1

我的目标是从字符串中取第一个字并将其分配给bash数组FIRSTWORD{i],并将字符串的其余部分放入另一个数组REST[i],其中i是一个整数计数器。将多字字符串分配给bash数组元素

我尝试这样的做法:(注:严格来说tmp只是为了调试)

更正:我离开了索引关string瓦尔。应该是string[1]string[2]

string[1]="One Two Three Four" 
string[2]="Five Six Seven Eight" 
# etc etc 

for ((i=0; i < ${#string[@]}; i++)) 
do 
    set -- ${string[i]} 
    FIRSTWORD[i]=$1 
    tmp="${*:2}" 
    REST[i]=$tmp 
    echo $tmp 
    echo ${REST[i]} 
done 

REST[i]真可谓等于"Two"tmp等于"one tswo three"

所以,我想:

IFS=$'\n'; REST[i]="${*:2}"; IFS=$' '; 

没有喜悦。

那么,我该如何完成这项任务?

+1

对于两个echo语句(在我注释掉字符串的第二个定义之后),我得到了“Two Three Four” – jedwards 2013-04-05 22:38:42

+0

糟糕。那些是字符串[1]和字符串[2]。示例已更正。 – 2013-04-08 11:22:46

回答

1

找到我的答案。我改变:

REST[i]=$tmp 

REST[i]="$tmp" 

现在读入其余的数据被保存起来。

我认为这与bash和命令行分裂和匹配数据有关。

相关问题