[squeak-dev] script arguments with spaces
Bert Freudenberg
bert at freudenbergs.de
Fri Oct 8 21:10:18 UTC 2010
Squeak does it right. I suspect your "st" script is broken.
- Bert -
On 08.10.2010, at 09:44, Chris Muller wrote:
>> Of course. Try it and see. This is a shell issue. What's the syntax to
>> supply an arg containing spaces. On Unix there are
>> two^H^H^Hthree^H^H^H^H^Hfour ways. Escape spaces with back slashes, use IFS
>> to make space a non-separator and separate words using e.g. TAB (I think
>> this works), surround the argument with single quotes or surround the arg
>> with double quotes.
>
> Right I did try all of those things of course (except adjusting IFS),
> but it appears that Squeak puts its own interpretation onto these
> arguments differently from the shell. IOW, Squeak appears to be doing
> a simple subStrings operation regardless of escape-characters when
> loading up the systemAttribute array... For example:
>
> st '1000 factorial' <----- Squeak gets 2 args, '1000' and 'factorial'
> st "1000\ factorial" <----- Squeak gets 2 args, '1000\' and 'factorial'
>
> Strings are a challenge because the shell does not allow single-ticks
> inside of single-ticks, but one can use Symbols:
>
> st '#hello asString asUppercase' <--------- Squeak gets 3 args...
>
> My goal is to deliver a "Smalltalk command-line". I did find that
> your stdin works, so I can do:
>
> st <<printit
> 'hello' asUppercase
> printit
>
> works. :)
>
>
>>>
>>> I actually want to allow the Linux user to specify a chunk of code
>>> (which contains spaces) on the command-line.
>>>
>>> I tried enclosing it in ticks, but Squeak still loaded each
>>> system-attribute into its own slot. Interestingly, it did not include
>>> the beginning or ending tick.
>>>
>>> So, it looks like I could assemble all of the pieces, separatedBy:
>>> Character space, but that would limit the chunk to 997 "words"..
>>>
>>
>>
>>
>>
>>
>
More information about the Squeak-dev
mailing list
|