根据时间更改 grub 默认选项

根据时间更改 grub 默认选项

我尝试更改 grub 中的 00_header,以便在满足特定条件时在菜单中设置不同的默认选项。如果我在特定时间之前启动计算机,则默认选项应该是其他选项。

这是我目前所做的:

regexp --set hour "([0-9]{2})\:" `date`
if [ $hour -lt 9 ]; then
  set default="Windows 10"
fi

正则表达式有效(如果我手动输入来自的日期date)。但是,瓶颈在于语句date没有被命令的输出替换,而是保持原样(date)。我试图用谷歌搜索如何将 grub 命令的输出放在变量中,但没有成功。

有人知道如何实现这一点吗?

提前致谢。

答案1

  • 首先,/etc/grub.d除非您运行命令,否则不会应用下面的脚本update-grub
  • 第二个问题是这些脚本的结果应该是输出到 stdout 并附加到 grub.cfg,所以你应该有像 echo 这样的命令。
  • 第三个问题是 grub 有自己的语言。虽然您可以使用 if 之类的条件,但您无法运行 date 之类的 bash 命令,而且据我所知,没有办法从 grub 嵌入式 shell 中获取日期。

基本上,恐怕没有办法实现你所期望的。

编辑:我的错,在这种情况下,你的脚本应该是这样的(没有检查 grub 的语法,因为我不太友好)

cat << EOF
regexp --set hour "([0-9]{2})\:" `date`
if [ $hour -lt 9 ]; then
  set default="Windows 10"
fi
EOF

相关内容