数组扩展

数组扩展

我在扩展数组时得到了意想不到的结果。我希望有人能够解释为什么我会看到我所看到的。我正在尝试使用 fdisk -l 填充数组并只获取单个元素。代码:

#!/bin/bash
declare -a PARTITIONS=();

PARTITIONS=$(fdisk -l ubuntu-minimal-16.04-desktop-armhf-raspberry-pi-2.img | grep -i ubuntu-minimal-16.04-desktop-armhf-raspberry-pi-2.img | sed '/Disk/d' | cut -d " " -f1)

echo "PARTITIONS[@]:${PARTITIONS[@]}"

echo "ELEMENT 0: ${PARTITIONS[0]}"

echo "ELEMENT 1: ${PARTITIONS[1]}"

输出:

 PARTITIONS[@]:ubuntu-minimal-16.04-desktop-armhf-raspberry-pi-2.img1 ubuntu-minimal-16.04-desktop-armhf-raspberry-pi-2.img2

 ELEMENT 0: ubuntu-minimal-16.04-desktop-armhf-raspberry-pi-2.img1 ubuntu-minimal-16.04-desktop-armhf-raspberry-pi-2.img2

 ELEMENT 1: 

没有元素1。我做错了什么?

答案1

分配给数组时:

array=( elements )

IE,

PARTITIONS=( $(fdisk ... ) )

答案2

当一个字符串被分配给一个数组时,它被分配给它的第一个元素。观察:

$ declare -a x
$ x=$(date)
$ declare -p x
declare -a x='([0]="Fri Jul 15 11:09:59 PDT 2016")'

$(date)是命令替换产生的字符串。 (这就像您的 fdisk 管道,但更简单。) declare -p此处用于显示 bash 变量的确切内容。

如果您想对字符串进行分词,请使用括号,如下所示:

$ x=($(date))
$ declare -p x
declare -a x='([0]="Fri" [1]="Jul" [2]="15" [3]="11:10:08" [4]="PDT" [5]="2016")'

相关内容