help-grub
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Reading File Name or Contents


From: Marc Smith
Subject: Re: Reading File Name or Contents
Date: Fri, 17 Jul 2015 23:33:54 -0400

Ah, 'source' as in 'source' used with the shell... just figured they would label it as a command for the minimal GRUB shell, but doesn't appear they do (and maybe they don't list others as well). I'll try it soon, thanks again.

--Marc



On Fri, Jul 17, 2015 at 11:16 PM, Marc Smith <address@hidden> wrote:
Joāo Ricardo Sares Teles de Matos: Thank you for the idea, but using an already generated grub.cfg file is a requirement (using grub-mkconfig isn't an option).


On Fri, Jul 17, 2015 at 6:11 PM, Jordan Uggla <address@hidden> wrote:

On Fri, Jul 17, 2015 at 7:12 AM, Marc Smith <address@hidden> wrote:
> Hi,
>
> Looking for any possibility of reading the contents of a file (or even just
> the file name) into a variable in a GRUB config file? I've read that command
> substitution is not supported and no plans to add it, but is there any other
> way?
>
> I've tried a couple other methods without success (in the grub.cfg file):
> --snip--
> while read ver_str;
> do
>     something_with ${ver_str}
> done < /version_file
> --snip--
>
> OR
>
> --snip--
> cat /version_file | while read ver_string;
> do
>     something_with ${ver_str}
> done
> --snip--

To get the version number from a file named "version_*", where the '*'
is actually the version string, you could do something like this:

insmod regexp
filename=/directory/containing/file/version_*

# Now we can, if we want to, extract just the version string
regexp --set=version_string '/directory/containing/file/version_(.*)'
"$filename"

# Now $version_string contains just the version string.

Please note that I'm not in a position to actually test the above
code, so it likely contains mistakes.

Thanks Jordan, I'll give it a shot.

 

>
> The goal is to read a "version string" from a file at boot with GRUB to
> display different menu entries for different versions, but I'd even take
> just getting the string from the file name at this point. Any ideas? My last
> resort is to just use sed to modify grub.cfg when a new version of the OS is
> installed (for a new GRUB menu entry), but I'd prefer not to do that unless
> I have to.
>
> Or what about including another grub.cfg file and then in the included GRUB
> config file just have the line "set ver_str=0.1.1" -- I was thinking using
> the 'configfile' command would do this, but doesn't seem to work as I
> expected.

That method would also work fine, you just need to use "source" rather
than configfile. The configfile command is used to load a file which
will populate an entirely new grub menu whereas source in grub, much
like in bash, executes commands in the current context.

Okay, I'd prefer this method and I'll try it, but I don't see it in the GRUB documentation: http://www.gnu.org/software/grub/manual/grub.html

Is that part of GRUB 2.00 or is it a feature in a newer version, or am I just missing?


--Marc

 

--
Jordan Uggla (Jordan_U on irc.freenode.net)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]