【问题标题】:grub2 howto increment variablegrub2 如何增加变量
【发布时间】:2017-07-03 20:05:01
【问题描述】:

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

但是如何在 grub2 中增加一个变量呢?

在 bash 中我会这样做:

var=$((var+1))

((var=var+1))

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

【问题讨论】:

    标签: bash shell bootloader grub grub2


    【解决方案1】:

    Grub2 没有内置的算术支持。如果需要,您需要添加 Lua 支持,详情请参阅 this answer

    【讨论】:

    • 好的,谢谢您的回答!我想我会为这种特殊情况添加一个新的 grub 模块。
    • 哪里可以找到这样的信息?当然,我还没有阅读完整的 GRUB 手册,但是在“类 Shell 脚本”部分中没有提到这样的事情。
    【解决方案2】:

    基于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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-21
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      • 2019-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多