2

grub2 shell 旨在成为一个类似于 shell 的简约 bash。

但是我怎样才能在 grub2 中增加一个变量呢?

在 bash 我会做:

var=$((var+1))

或者

((var=var+1))

在 grub2 中,这些调用出现语法错误。如何在 grub2 shell 中实现这一点?

4

2 回答 2

1

Grub2 没有内置的算术支持。如果需要,您需要添加 Lua 支持,有关详细信息,请参阅此答案

于 2017-02-15T09:25:48.050 回答
0

基于此答案(已由其他答案链接),以下似乎适用于 GRUB 的regexp命令(允许从任何数字 0-5 递增,根据需要添加更多 <from>,<to> 对):

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
于 2020-01-02T19:32:09.010 回答