Я пытаюсь проанализировать / proc / cmdline в моих initramfs с помощью оператора case.
CMDLINE=`cat /proc/cmdline`
for param in $CMDLINE ; do
case "$param" in
root=*|init=*)
eval "$param"
;;
rescue)
escue="y"
;;
drive*)
echo -n $param
;;
esac
done
Теперь проблема в том, что у меня есть диск *, я хочу взять несколько экземпляров диска из cmdline и разобрать их все в массив.
Так что / proc / cmdline может выглядеть следующим образом.
/dev/mapper/Betsy-root vga=792 quiet=y opt2=bar opt1=bar op3=bar drive1="abcde:key.gpg" drive2="qrstuv:key2.gpg" drive3="foobar:false"
Проблема связана с оператором case, когда я вожу машину *). $ Param теперь выглядит следующим образом.
drive1="abcde:key.gpg"drive2="qrstuv:key2.gpg"drive3="foobar:false"
Так любопытно, лучший способ выполнить то, что я хочу. Что бы динамически создавать массив дисков. Например
drive[0]
drive[1]
drive[2]
То, что я пытался сделать, это просто искать [a-zA-Z] "и вставлять новую строку. Таким образом, они могли бы быть разделены, и я мог бы бросить их в массив. Хотя мне никогда не удавалось получить это работать, как я надеялся. Так что со всем, что сказал ...
Не зная, сколько экземпляров будет в / proc / cmdline. Как я могу вставить каждый диск [0-9] в массив. Или, может быть, это просто плохое место для заявления случая? Любой совет будет оценен.