D Shell [was Re: A C++ interpreter]

Graham Fawcett fawcett at uwindsor.ca
Fri Aug 17 05:53:50 PDT 2012


On Tuesday, 14 August 2012 at 04:09:22 UTC, Nick Sabalausky wrote:
> On Mon, 13 Aug 2012 17:36:13 +0200
> "jerro" <a at a.com> wrote:
>
>> > I probably should make it so it automatically wraps the code 
>> > in a main function for even easier and more script like 
>> > usage.
>> 
>> Rdmd already has this functionality with the --eval flag. You 
>> are supposed to pass the code as a command line parameter, but 
>> you can use it with files like this:
>> 
>> cat - test.d <<< "--eval=" | xargs -0 rdmd
>> 
>> I've only tried this on Linux.
>
> As a person who's still only half-way a Linux guy, I have to 
> ask: What
> the hell is going on in that command?
>
> I understand bits and pieces of it, but my mind's having a hard 
> time
> parsing it. Can any of you unix gurus help me out?

Run the "cat" program, which prints two file contents: the first 
file is stdin (denoted by "-"), which contains the text 
"--eval=", via the <<< redirector. Cat then prints the contents 
of test.d. All of this is piped in to "xargs", which calls dmd 
along with the command line arguments consisting of the piped 
input.

It's overly complicated. Try this instead:

rdmd --eval="$(cat test.d)"

Best,
Graham


More information about the Digitalmars-d mailing list