2012-01-11 13 views
6

blkidの出力のいくつかの行を配列に格納したいとします。問題は、それらの行に空白が含まれていて、配列の構文がそれらを単一の配列要素の区切り文字として受け取り、1つの配列要素で1行ではなく、配列の分割された行で終わることです。配列内に空白を含むgrep出力を格納する

これは私が現在持っているコードです: 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を持っていると思いますinsted。 /dev/sdb1: LABEL="ARCH_201108" TYPE="udf"をデバイスアレイの最初の要素に、/dev/sdc1: LABEL="WD" UUID="414ECD7B314A557F" TYPE="ntfs"を2番目の要素にします。どのように私はそれを達成することができますか?

答えて

13

配列要素はIFS値で分割されます。あなたは改行で分割したい場合は、IFS調整します

IFS_backup=$IFS 
IFS=$'\n' 
devices=($(sudo blkid | egrep '^/dev/sd[b-z]')) 
IFS=$IFS_backup 
echo ${#devices[@]} 
+0

がナイスリー行わ... 1 –

+0

ありがとうございました、それは私が探していたものexacltyです。 –

+0

私はあなたのような人々が存在することをうれしく思っています:答えに感謝します:) –

関連する問題