grub2 如何增加变量
grub2 howto increment variable
grub2 shell 的目标是像 shell 一样简约 bash。
但是如何在 grub2 中增加一个变量?
在bash我会做:
var=$((var+1))
或
((var=var+1))
在 grub2 中,这些调用出现语法错误。我怎样才能在 grub2 shell?
中实现这个
Grub2 没有内置算术支持。如果需要,您需要添加 Lua 支持,有关详细信息,请参阅 this answer。
基于 this answer (已由其他答案链接),以下似乎适用于 GRUB 的 regexp
命令(允许从 0-5 的任何数字递增,添加更多 , 根据需要配对):
num=0
incr="" ; for x in 0,1 1,2 2,3 3,4 4,5 5,6 ; do
regexp --set=1:incr "${num},([0-9]+)" "${x}"
if [ "$incr" != "" ] ; then
echo "$num incremented to $incr"
num=$incr
break
fi
done
递减同样有效(只是翻转两个正则表达式部分):
num=6
decr="" ; for x in 0,1 1,2 2,3 3,4 4,5 5,6 ; do
regexp --set=1:decr "([0-9]+),${num}" "${x}"
if [ "$decr" != "" ] ; then
echo "$num decremented to $decr"
num=$decr
break
fi
done
grub2 shell 的目标是像 shell 一样简约 bash。
但是如何在 grub2 中增加一个变量?
在bash我会做:
var=$((var+1))
或
((var=var+1))
在 grub2 中,这些调用出现语法错误。我怎样才能在 grub2 shell?
中实现这个Grub2 没有内置算术支持。如果需要,您需要添加 Lua 支持,有关详细信息,请参阅 this answer。
基于 this answer (已由其他答案链接),以下似乎适用于 GRUB 的 regexp
命令(允许从 0-5 的任何数字递增,添加更多
num=0
incr="" ; for x in 0,1 1,2 2,3 3,4 4,5 5,6 ; do
regexp --set=1:incr "${num},([0-9]+)" "${x}"
if [ "$incr" != "" ] ; then
echo "$num incremented to $incr"
num=$incr
break
fi
done
递减同样有效(只是翻转两个正则表达式部分):
num=6
decr="" ; for x in 0,1 1,2 2,3 3,4 4,5 5,6 ; do
regexp --set=1:decr "([0-9]+),${num}" "${x}"
if [ "$decr" != "" ] ; then
echo "$num decremented to $decr"
num=$decr
break
fi
done