如何以不同的方式在数组中插入字符串

use*_*033 3 bash array shell-script

我有一个像下面这样的字符串。str='014387650' 现在我想像下面这样拆分这个字符串并将值放入数组中。

A[0]=0  
A[1]=01  
A[2]=014  
A[3]=0143  
A[4]=01438  
A[5]=014387  
A[6]=0143876  
A[7]=01438765  
A[8]=014387650  
Run Code Online (Sandbox Code Playgroud)

jor*_*anm 5

以下应该适用于bash:

str='014387650'
arr=()
for ((i=0; i<${#str}; i++)); do
    arr+=("${arr[i-1 < 0 ? 0 : i-1]}${str:$i:1}")
done
Run Code Online (Sandbox Code Playgroud)

结果:

$ printf '<%s>\n' "${arr[@]}"
<0>
<01>
<014>
<0143>
<01438>
<014387>
<0143876>
<01438765>
<014387650>
Run Code Online (Sandbox Code Playgroud)

  • 我很困惑为什么你引用前一个元素而不是仅仅在 str 上建立分割范围。这没有错,但对我来说似乎很复杂。 (2认同)