<br><br><div class="gmail_quote">On Sat, Oct 9, 2010 at 10:54 AM, Chris Muller <span dir="ltr"><<a href="mailto:asqueaker@gmail.com">asqueaker@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hm, it looks like you are right. When I pass the argument directly to squeak:<br>
<br>
squeak my.image my.script 'hello world' &<br>
<br>
and 'hello world' came in as a single-argument. So I've got some bashing to do.<br></blockquote><div><br></div><div>You need to use "$@", not $@, $* or "$*". See the squeak scripts in the Cog linux VM for an example.</div>
<div><br></div><div><div>#!/bin/sh</div><div>BIN=`/usr/bin/dirname $0`/lib/squeak/3.9-7</div><div># At least on linux LD_LIBRARY_PATH's components must be absolute path names</div><div>case "$BIN" in</div><div>
/*) PLUGINS="$BIN";;</div><div>*) PLUGINS="`pwd`/$BIN"</div><div>esac</div><div># prepending is less flexible but safer because it ensures we find the plugins</div><div># in the same directory as the VM.</div>
<div>LD_LIBRARY_PATH=$PLUGINS${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} exec "$BIN/squeak" "$@"</div></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
Thanks, and sorry for the false alarm.<br>
<br>
- Chris<br>
<br>
PS - is there a Linux "best practice" or overall preference regarding<br>
command-line arguments vs. stdin? stdin would allow redirection of<br>
Smalltalk scripts, as well as the convenience of raw stream input via<br>
the keyboard (e.g., not having to worry about escape chars), so I'm<br>
leaning that way...<br></blockquote><div><br></div><div>Since Squeak hasn't been used that much with stdio I would expect there not to be any best practices. Instead you should just go ahead and explore. I think the point of using stdin is that it allows interactive experimentation. In developing a bootstrap from a kernel image tis will have its uses. Being able to write pipelined commands in Squeak is fun but arguably one needs a much better file interface to make this compelling. </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div><div></div><div class="h5"><br>
<br>
On Fri, Oct 8, 2010 at 4:10 PM, Bert Freudenberg <<a href="mailto:bert@freudenbergs.de">bert@freudenbergs.de</a>> wrote:<br>
> Squeak does it right. I suspect your "st" script is broken.<br>
><br>
> - Bert -<br>
><br>
><br>
> On 08.10.2010, at 09:44, Chris Muller wrote:<br>
><br>
>>> Of course. Try it and see. This is a shell issue. What's the syntax to<br>
>>> supply an arg containing spaces. On Unix there are<br>
>>> two^H^H^Hthree^H^H^H^H^Hfour ways. Escape spaces with back slashes, use IFS<br>
>>> to make space a non-separator and separate words using e.g. TAB (I think<br>
>>> this works), surround the argument with single quotes or surround the arg<br>
>>> with double quotes.<br>
>><br>
>> Right I did try all of those things of course (except adjusting IFS),<br>
>> but it appears that Squeak puts its own interpretation onto these<br>
>> arguments differently from the shell. IOW, Squeak appears to be doing<br>
>> a simple subStrings operation regardless of escape-characters when<br>
>> loading up the systemAttribute array... For example:<br>
>><br>
>> st '1000 factorial' <----- Squeak gets 2 args, '1000' and 'factorial'<br>
>> st "1000\ factorial" <----- Squeak gets 2 args, '1000\' and 'factorial'<br>
>><br>
>> Strings are a challenge because the shell does not allow single-ticks<br>
>> inside of single-ticks, but one can use Symbols:<br>
>><br>
>> st '#hello asString asUppercase' <--------- Squeak gets 3 args...<br>
>><br>
>> My goal is to deliver a "Smalltalk command-line". I did find that<br>
>> your stdin works, so I can do:<br>
>><br>
>> st <<printit<br>
>> 'hello' asUppercase<br>
>> printit<br>
>><br>
>> works. :)<br>
>><br>
>><br>
>>>><br>
>>>> I actually want to allow the Linux user to specify a chunk of code<br>
>>>> (which contains spaces) on the command-line.<br>
>>>><br>
>>>> I tried enclosing it in ticks, but Squeak still loaded each<br>
>>>> system-attribute into its own slot. Interestingly, it did not include<br>
>>>> the beginning or ending tick.<br>
>>>><br>
>>>> So, it looks like I could assemble all of the pieces, separatedBy:<br>
>>>> Character space, but that would limit the chunk to 997 "words"..<br>
>>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>><br>
>><br>
><br>
><br>
><br>
<br>
</div></div></blockquote></div><br>