Just an update for anyone else reading this thread in the future: Using
'source' with an external file containing "set ver_str=0.x.x" works
perfectly. Thanks again!


--Marc

On Sat, Jul 18, 2015 at 11:30 AM, Arbiel (gmx) <[email protected]>
wrote:

> Ubuntu's /etc/grub.d directory contains a 41_custom file which reads
>
> #!/bin/sh
> cat <<EOF
> if [ -f  \${config_directory}/custom.cfg ]; then
>   source \${config_directory}/custom.cfg
> elif [ -z "\${config_directory}" -a -f  \$prefix/custom.cfg ]; then
>   source \$prefix/custom.cfg;
> fi
> EOF
>
> The generated code, included into grub.cfg, reads, if it exists, the
> custom.cfg file.
>
> You can hand-write this custom.cfg file to either "source" or
> "configfile" your file. The path to your file can have been stored into
> an environment variable (grub-editenv).
>
> "sourcing" the file will add menu entries into the regular grub menu,
> "configfiling" it will drop the regular menu and replace it by a brand
> new menu, defined by the "menuentry" lines of your hand-written file.
>
> Arbiel
>
> Le 18/07/2015 05:33, Marc Smith a écrit :
> > 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 <[email protected]
> > <mailto:[email protected]>> 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
> >     <[email protected] <mailto:[email protected]>> wrote:
> >
> >         On Fri, Jul 17, 2015 at 7:12 AM, Marc Smith
> >         <[email protected] <mailto:[email protected]>> 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
> >         <http://irc.freenode.net>)
> >
> >
> >
> >
> >
> > _______________________________________________
> > Help-grub mailing list
> > [email protected]
> > https://lists.gnu.org/mailman/listinfo/help-grub
>
>
>
_______________________________________________
Help-grub mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-grub

Reply via email to