On Thu, Nov 25, 2010 at 9:13 PM, Dylan Smith <[email protected]> wrote:
> On Thu, Nov 25, 2010 at 5:45 AM, Grissiom <[email protected]> wrote:
>> Good patch. Much better than me. ;)
>>
>> But I have a few questions, not for your patch, but for the syntax
>> checker(or tokenizer if it does the job).
>>
>> On Thu, Nov 25, 2010 at 11:04 AM, Dylan Smith <[email protected]> 
>> wrote:
>>> I tested fish_indent with the following test cases:
>>>
>>> for x in (seq 0 3)
>>>  echo "cmd arg $x> outfile" | fish_indent
>>>  echo "cmd arg $x^ outfile" | fish_indent
>>>  echo "cmd arg $x< infile" | fish_indent
>>>  echo "cmd arg $x>> appendfile" | fish_indent
>>>  echo "cmd arg $x^^ appendfile" | fish_indent
>>>  echo "cmd arg $x>| cmd" | fish_indent
>>>  echo "cmd arg $x>&4" | fish_indent
>>> end
>>> ---
>>>  # Output
>>> cmd arg 0> outfile
>>> cmd arg 0> outfile
>>
>> Actuarially, 1^ is invalid:
>>
>> ~/test> cat 1^
>> fish: Expected redirection specification, got token of type “End of command”
>> cat 1^
>>      ^
>>
>> so as 1^^.
>
> Those are error redirections, so you need to append a filename, which
> in my command is outfile.

Yup. But I think it's still invalid when appended with a filename.
Because we use ^ to redirect stderr which is expected to be 2, there
is no need to specify an other file descriptor.

>
>>
>>> cmd arg < infile
>>> cmd arg 0>> appendfile
>>> cmd arg 0>> appendfile
>>> fish_indent: Unknown token 'Can not use fd 0 as pipe output'
>>> cmd arg 0>&4
>>
>> Is it valid to redirect stdin to other files? Say, if I redirect stdin
>> to stdout in cat, it should yield what I input 3 times. But both fish
>> and bash give 2 times result:
>>
>> ~> cat 0>&1
>> 1
>> 1
>> 2
>> 2
>> 3
>> 3
>>
>> I think redirect to a file is just like redirect to a pipe. (All the
>> things are files, right? ;)
>
> # Warning, using bash syntax for the next command
> dylan:~$ ls /proc/$$/fd -l
> total 0
> lr-x------ 1 dylan users 64 Nov 25 08:08 0 -> /dev/pts/1
> lrwx------ 1 dylan users 64 Nov 25 08:08 1 -> /dev/pts/1
> lrwx------ 1 dylan users 64 Nov 25 08:08 2 -> /dev/pts/1
> lrwx------ 1 dylan users 64 Nov 25 08:08 255 -> /dev/pts/1
>
> Notice that fd 0, 1, 2 all point to the same device, a
> pseudo-terminal.  Therefore copying one file descriptor to another
> doesn't do anything unless until one of them is pointed to something
> else first.  The only difference is that fd 0 is read from and fd 1 is
> written to.

Thanks for the explanation. Perhaps I understand it.

-- 
Cheers,
Grissiom

------------------------------------------------------------------------------
Increase Visibility of Your 3D Game App & Earn a Chance To Win $500!
Tap into the largest installed PC base & get more eyes on your game by
optimizing for Intel(R) Graphics Technology. Get started today with the
Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs.
http://p.sf.net/sfu/intelisp-dev2dev
_______________________________________________
Fish-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fish-users

Reply via email to