我有一个字符串数组,其中包含以下由空格分隔的数字。
S0 [
42 4677
S10 [
4719 1266
6020 3618
9667 8463
我想将每个值分隔为一个整数并将其放入一个单独的数组中,例如 array2 = [S0,42, 4677,S10, 4719, 1266, 6020, 3618, 9667, 843]。
我所做的就是像这里给出的解决方案一样遍历数组
How to split one string into multiple strings separated by at least one space in bash shell?
对于数组的每个元素,但它似乎不起作用。
for each in ${my_array[1]}
do
echo $each
done
总是给我输出 42 4677
作为一个单一的值(value)。
EDITED
for each in ${my_array[@]}
do
echo $each
done
declare -a array2
for each in ${my_array[@]}
do
array2=$each
done
echo ${array2[1]}
declare -p my_array
现在第一个 for 循环工作正常,但是现在当我在第二个循环中将 my_array 的值分配给 array2 时,只有最后一个字符串的最后一个值被分配给它,即 8463
.
declare -p my_array
的内容是
declare -a my_array='([0]="S0 [" [1]="42 4677" [2]="S10 [" [3]="4719 1266" [4]="6020 3618" [5]="9667 8463")'
最佳答案
您可以使用:
declare -a my_array='([0]="S0 [" [1]="42 4677" [2]="S10 [" [3]="4719 1266" [4]="6020 3618" [5]="9667 8463")'
array2=()
for i in ${my_array[@]}; do
[[ $i == *[0-9]* ]] && array2+=($i)
done
# check content of array2
declare -p array2
declare -a array2=([0]="S0" [1]="42" [2]="4677" [3]="S10" [4]="4719" [5]="1266" [6]="6020" [7]="3618" [8]="9667" [9]="8463")
关于arrays - 如何在shell中将字符串拆分为两个单独的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45837417/