Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: convolutions

On Fri, Nov 6, 2015 at 6:15 PM, Ray Andrews <rayandrews@xxxxxxxxxxx> wrote:
> Gentlemen:
>     echo "$(eval echo "\${$(cat in_file)}")" >! out_file
> That's the best I've been able to do expanding color variables, eg. " ${red}
> " into their native " \e[31;1m " in a file.

Just as an aside, this is the second code example you've posted
recently that can't possibly work in practice.  I can only assume
you're mis-transcribing in an attempt to simplify whatever your real
code is.

If I understand this correctly, you have a file that contains text
which looks like

   The following ${fg[red]}text is red${reset_color} and this is not

and you want to end up with the variables expanded in out_file as the
actual escape sequences?

    print -R "${(e)$(<in_file)}" >| out_file

Of course that will also replace other possible expansions that may
appear in the text of in_file.  If you really want to replace exactly
and only the specific references to color variables, you need
something like Zyx's sed expression.

Messages sorted by: Reverse Date, Date, Thread, Author