我想在一个数组中存储一些blkid输出行.问题是,这些行包含空格,并且数组语法将它们作为单个数组元素的分隔符,因此我最终在我的数组中使用分割线而不是一行代表一个数组元素.
这是我目前的代码:
devices =($(sudo blkid | egrep’^ / dev / sd [b-z]’))
echo ${devices [*]}给出了以下输出:
/dev/sdb1: LABEL="ARCH_201108" TYPE="udf" /dev/sdc1: LABEL="WD" UUID="414ECD7B314A557F" TYPE="ntfs"
但echo ${#devices [*]}给了我7但是我想要有2.我希望/ dev / sdb1:LABEL =“ARCH_201108”TYPE =“udf”成为我的设备数组和/ dev中的第一个元素/ sdc1:LABEL =“WD”UUID =“414ECD7B314A557F”TYPE =“ntfs”是第二个.我怎么能做到这一点?
数组元素在IFS值上拆分.如果要拆分换行符,请调整IFS:
IFS_backup=$IFS IFS=$'\n' devices=($(sudo blkid | egrep '^/dev/sd[b-z]')) IFS=$IFS_backup echo ${#devices[@]}