|
From: | Marc Smith |
Subject: | Re: Reading File Name or Contents |
Date: | Fri, 17 Jul 2015 23:16:46 -0400 |
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.
>
> 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.
--
Jordan Uggla (Jordan_U on irc.freenode.net)
[Prev in Thread] | Current Thread | [Next in Thread] |