Ale*_*ier 6 arrays bash shell whitespace grep
我想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"
Run Code Online (Sandbox Code Playgroud)
但是echo ${#devices[*]}给了我7但是我想要拥有2.我希望/dev/sdb1: LABEL="ARCH_201108" TYPE="udf"成为我的设备阵列中的第一个元素,并/dev/sdc1: LABEL="WD" UUID="414ECD7B314A557F" TYPE="ntfs"成为第二个元素.我怎么能做到这一点?
cho*_*oba 13
数组元素在IFS值上拆分.如果要拆分换行符,请调整IFS:
IFS_backup=$IFS
IFS=$'\n'
devices=($(sudo blkid | egrep '^/dev/sd[b-z]'))
IFS=$IFS_backup
echo ${#devices[@]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3283 次 |
| 最近记录: |