无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 6577|回复: 8
打印 上一主题 下一主题

[求助] grub2 的 if 指令

[复制链接]
跳转到指定楼层
1#
发表于 2020-7-12 15:03:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大神
本人在https://ftp.gnu.org/gnu/grub/ 下載的grub-2.04-for-windows.zip
已製作了bootx64.efi 和 g2ldr 分別做成efi 和 mbr
但有個問題想請教各位大神
我的grub.cfg 其中一項
menuentry '正常啟動(Windows)' --unrestricted --hotkey="w" --class windows {
    echo "platform = " $grub_platform
    if [$grub_platform==pc] ; then
        if search --file --set --no-floppy /bootmgr ; then
            chainloader +1
        elif search --file --set --no-floppy /ntldr ; then
            chainloader +1
        else
            echo '沒有找到Windows'
            sleep --verbose 5
        fi
    fi

    if $grub_platform=="efi" ; then
        if search --file --set --no-floppy /EFI/Microsoft/Boot/bootmgfw.efi ; then
            chainloader /EFI/Microsoft/Boot/bootmgfw.efi
        else
            echo '沒有找到Windows efi'
            sleep --verbose 5
        fi
    fi
}

就是這裡 if [$grub_platform==pc] 無論如何改, 結果都為True
有改過if [$grub_platform=="pc"] / if ["$grub_platform"=="pc"] / if ["${grub_platform}"=="pc"]

還有這句 if search --file --set --no-floppy /bootmgr ; then, 也是一樣

我翻了好多文章, 結果還是一樣, 請問有解嗎?
2#
发表于 2020-7-12 15:10:15 | 只看该作者
我记得是
if [ "$grub_platform" = "pc" ]

点评

這個也試過了, 還是不行 if [ "$grub_platform" = "pc" ] 和 if [ "$grub_platform" == "pc" ] 甚至 if [ "$grub_platform" != "pc" ] 結果都為True  详情 回复 发表于 2020-7-12 15:45
回复

使用道具 举报

3#
 楼主| 发表于 2020-7-12 15:45:38 | 只看该作者
江南一根葱 发表于 2020-7-12 15:10
我记得是
if [ "$grub_platform" = "pc" ]

這個也試過了, 還是不行
if [ "$grub_platform" = "pc" ] 和 if [ "$grub_platform" == "pc" ] 甚至 if [ "$grub_platform" != "pc" ]
結果都為True

点评

怎么试的,完整的  详情 回复 发表于 2020-7-12 16:02
回复

使用道具 举报

4#
发表于 2020-7-12 16:02:32 | 只看该作者
2013ming028 发表于 2020-7-12 15:45
這個也試過了, 還是不行
if [ "$grub_platform" = "pc" ] 和 if [ "$grub_platform" == "pc" ] 甚至 if  ...

怎么试的,完整的
回复

使用道具 举报

5#
发表于 2020-7-12 16:11:14 | 只看该作者
if空格[空格"$grub_platform"空格=空格"pc"空格]

点评

以 : if空格[空格"$grub_platform"空格=空格"pc"空格] 方式寫 它出現 can't find command '[. 剛想到, 其實會不會 v2.4 版本的問題呢?  详情 回复 发表于 2020-7-12 16:58
回复

使用道具 举报

6#
发表于 2020-7-12 16:33:55 | 只看该作者
menuentry '正常啟動(Windows)' --unrestricted --hotkey="w" --class windows {
search --file --set=nt6 --no-floppy /bootmgr;
search --file --set=nt5 --no-floppy /ntldr;
search --file --set=efi --no-floppy /EFI/Microsoft/Boot/bootmgfw.efi;
if [ "$grub_platform" = "efi" ] -a [ -n "${efi}" ];
then
        chainloader (${efi})/EFI/Microsoft/Boot/bootmgfw.efi
        if [ "$grub_platform" = "pc" ] -a [ -n "${nt6}" ];
        then
        chainloader (${nt6})/bootmgr
        fi;
        if [ "$grub_platform" = "pc" ] -a [ -n "${nt5}" ];
        then
        chainloader (${nt5})/ntldr
        fi;
else
       echo '沒有找到Windows'
       sleep --verbose 5        
fi;        
}
        我瞎写的,没验证
回复

使用道具 举报

7#
 楼主| 发表于 2020-7-12 16:58:16 | 只看该作者
wintoflash 发表于 2020-7-12 16:11
if空格[空格"$grub_platform"空格=空格"pc"空格]

以 : if空格[空格"$grub_platform"空格=空格"pc"空格] 方式寫
它出現 can't find command '[.

剛想到, 其實會不會 v2.4 版本的問題呢?

点评

不是2.04的问题,是你的问题。 "[" 是 test 的别名,你没加test模块。  详情 回复 发表于 2020-7-12 17:56
回复

使用道具 举报

8#
发表于 2020-7-12 17:56:25 | 只看该作者
2013ming028 发表于 2020-7-12 16:58
以 : if空格[空格"$grub_platform"空格=空格"pc"空格] 方式寫
它出現 can't find command '[.

不是2.04的问题,是你的问题。
"[" 是 test 的别名,你没加test模块。

点评

謝謝大神 加上test 模块 果然能判斷了, 但還有另外一個問題, if search --file --set --no-floppy /bootmgr ; then 還是不能判斷, 還是為 Ture ??  详情 回复 发表于 2020-7-12 18:33
回复

使用道具 举报

9#
 楼主| 发表于 2020-7-12 18:33:35 | 只看该作者
wintoflash 发表于 2020-7-12 17:56
不是2.04的问题,是你的问题。
"[" 是 test 的别名,你没加test模块。

謝謝大神
加上test 模块 果然能判斷了,
但還有另外一個問題, if search --file --set --no-floppy /bootmgr ; then 還是不能判斷, 還是為 Ture ??
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-25 14:35

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表