Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > script with -e command line option???

Reply
Thread Tools

script with -e command line option???

 
 
Suresh Unadrad
Guest
Posts: n/a
 
      01-26-2007
If I type in the following example from "Programming Ruby", I get an
error:

$ ruby -n -e "print if /wombat/" *.txt
-e:1: No such file or directory - if (Errno::ENOENT)

This is from a BASH command line on a linux system with ruby 1.8.4

At first I thought it was a problem with BASH interfering with quoting
or something, but I've tried many variations with no luck. Any idea?

thanks,

--su

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Wolfgang Nádasi-Donner
Guest
Posts: n/a
 
      01-26-2007
Suresh Unadrad schrieb:
> If I type in the following example from "Programming Ruby", I get an
> error:
>
> $ ruby -n -e "print if /wombat/" *.txt
> -e:1: No such file or directory - if (Errno::ENOENT)
>
> This is from a BASH command line on a linux system with ruby 1.8.4


My answer is from Windows 2000, Ruby 1.8.5, but the reason may be, that there is
no file in your directory which mathes "*.txt"

>>>>> Example from Windows Console >>>>>


C:\Dokumente und Einstellungen\wolfgang\Desktop>type otto.txt
Hello, world!

I'm here to wombat all thinks,
whatever wombat means...
C:\Dokumente und Einstellungen\wolfgang\Desktop>ruby -n -e "print if /wombat/" *.txt
I'm here to wombat all thinks,
whatever wombat means...

>>>>> EoE >>>>>


Wolfgang Nádasi-Donner
 
Reply With Quote
 
 
 
 
Rob Biedenharn
Guest
Posts: n/a
 
      01-26-2007

On Jan 26, 2007, at 4:55 PM, Wolfgang N=E1dasi-Donner wrote:

> Suresh Unadrad schrieb:
>> If I type in the following example from "Programming Ruby", I get an
>> error:
>> $ ruby -n -e "print if /wombat/" *.txt
>> -e:1: No such file or directory - if (Errno::ENOENT)
>> This is from a BASH command line on a linux system with ruby 1.8.4

>
> My answer is from Windows 2000, Ruby 1.8.5, but the reason may be, =20
> that there is no file in your directory which mathes "*.txt"
>
> >>>>> Example from Windows Console >>>>>

>
> C:\Dokumente und Einstellungen\wolfgang\Desktop>type otto.txt
> Hello, world!
>
> I'm here to wombat all thinks,
> whatever wombat means...
> C:\Dokumente und Einstellungen\wolfgang\Desktop>ruby -n -e "print =20
> if /wombat/" *.txt
> I'm here to wombat all thinks,
> whatever wombat means...
>
> >>>>> EoE >>>>>

>
> Wolfgang N=E1dasi-Donner


I suspect Wolfgang is correct. The output that I get is:

$ ruby -n -e "print if /wombat/" *.txt
-e:1: No such file or directory - *.txt (Errno::ENOENT)

Are you copying the exact message? It's odd that it thinks "if" is =20
the name. When the file exists it appears to do what you probably =20
expected.

$ ls
README app config doc log script tmp
Rakefile components db lib public test vendor
$ ruby -n -e "print if /wombat/" README*
$ ruby -n -e "print if /Congratulations/" README*
2. Go to http://localhost:3000/ and get "Congratulations, you've put =20
Ruby on Rails!"
3. Follow the guidelines on the "Congratulations, you've put Ruby on =20
Rails!" screen

Sorry, I didn't make a new .txt file, but just used what was handy.

-Rob


Rob Biedenharn http://agileconsultingllc.com
http://www.velocityreviews.com/forums/(E-Mail Removed)




 
Reply With Quote
 
Suresh Unadrad
Guest
Posts: n/a
 
      01-26-2007
Wolfgang Nádasi-donner wrote:
> My answer is from Windows 2000, Ruby 1.8.5, but the reason may be, that
> there is
> no file in your directory which mathes "*.txt"


no, that's not my problem. oh - but this reminds me that if i just use
something like "print" for the command line command, then it works fine:

$ ls *.txt
test.txt

$ more test.txt
I wish I had a fish.
I wish I had a wombat.
Fish are tasty.
Wombats are tasty too.

$ ruby -n -e "print if /wombat/" *.txt
-e:1: No such file or directory - if (Errno::ENOENT)

$ ruby -n -e "print if /wombat/" test.txt
-e:1: No such file or directory - if (Errno::ENOENT)

$ ruby -n -e "print" test.txt
I wish I had a fish.
I wish I had a wombat.
Fish are tasty.
Wombats are tasty too.

$ ruby -n -e "print" if test.txt
-e:1: No such file or directory - if (Errno::ENOENT)

so it seems clear that ruby isn't getting the entire -e argument,
probably due to intereference by BASH. anyone know how to fix this?

--su

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Rob Biedenharn
Guest
Posts: n/a
 
      01-26-2007

On Jan 26, 2007, at 5:08 PM, Suresh Unadrad wrote:

> $ ruby -n -e "print" if test.txt
> -e:1: No such file or directory - if (Errno::ENOENT)
>
> so it seems clear that ruby isn't getting the entire -e argument,
> probably due to intereference by BASH. anyone know how to fix this?
>
> --su


Well, the first thing to try is changing the kind of quotes.

$ ruby -n -e 'print if /wombat/' test.txt

If that doesn't work, I'd start to suspect that you have "ruby"
defined as an alias or something to make the args be evaluated twice.

-Rob

Rob Biedenharn http://agileconsultingllc.com
(E-Mail Removed)



 
Reply With Quote
 
Robert Klemme
Guest
Posts: n/a
 
      01-26-2007
On 26.01.2007 23:08, Suresh Unadrad wrote:
> Wolfgang Ndasi-donner wrote:
>> My answer is from Windows 2000, Ruby 1.8.5, but the reason may be, that
>> there is
>> no file in your directory which mathes "*.txt"

>
> no, that's not my problem. oh - but this reminds me that if i just use
> something like "print" for the command line command, then it works fine:
>
> $ ls *.txt
> test.txt
>
> $ more test.txt
> I wish I had a fish.
> I wish I had a wombat.
> Fish are tasty.
> Wombats are tasty too.
>
> $ ruby -n -e "print if /wombat/" *.txt
> -e:1: No such file or directory - if (Errno::ENOENT)
>
> $ ruby -n -e "print if /wombat/" test.txt
> -e:1: No such file or directory - if (Errno::ENOENT)
>
> $ ruby -n -e "print" test.txt
> I wish I had a fish.
> I wish I had a wombat.
> Fish are tasty.
> Wombats are tasty too.
>
> $ ruby -n -e "print" if test.txt
> -e:1: No such file or directory - if (Errno::ENOENT)
>
> so it seems clear that ruby isn't getting the entire -e argument,
> probably due to intereference by BASH. anyone know how to fix this?


This looks like "ruby" was a shell script that does not properly quote
arguments because ruby thinks the first word after "print" is a file
name. Here you can see the effect:

robert@fussel ~
$ ./aa -n -e "print if /wombat/" *.txt
-e:1: No such file or directory - if (Errno::ENOENT)

robert@fussel ~
$ cat aa
#!/bin/sh -f

ruby $*


robert@fussel ~
$

Kind regards

robert




 
Reply With Quote
 
jab3
Guest
Posts: n/a
 
      01-27-2007
On Friday 26 January 2007 17:08, Suresh Unadrad <Suresh Unadrad=20
<(E-Mail Removed)>> wrote:
> Wolfgang N=C3=A1dasi-donner wrote:
> > My answer is from Windows 2000, Ruby 1.8.5, but the reason may be,
> > that there is
> > no file in your directory which mathes "*.txt"

>
> no, that's not my problem. oh - but this reminds me that if i just
> use something like "print" for the command line command, then it
> works fine:
>
> $ ls *.txt
> test.txt
>
> $ more test.txt
> I wish I had a fish.
> I wish I had a wombat.
> Fish are tasty.
> Wombats are tasty too.
>
> $ ruby -n -e "print if /wombat/" *.txt
> -e:1: No such file or directory - if (Errno::ENOENT)
>
> $ ruby -n -e "print if /wombat/" test.txt
> -e:1: No such file or directory - if (Errno::ENOENT)
>


jab3:~% cat > wombat.txt
I wish I had a fish.
I wish I had a wombat.
=46ish are tasty.
Wombats are tasty too.
jab3:~% ruby -n -e "print if /wombat/" *.txt
I wish I had a wombat.
jab3:~%

Something is screwy with your setup. Note that it is complaining that=20
the file 'if' doesn't exist. You could try something like this and see=20
if it works:

ruby -n -e "$stdout.print if /wombat/" *.txt

Why it thinks that 'if' should be a file I'm not sure about.

=2Djab3

> $ ruby -n -e "print" test.txt
> I wish I had a fish.
> I wish I had a wombat.
> Fish are tasty.
> Wombats are tasty too.
>
> $ ruby -n -e "print" if test.txt
> -e:1: No such file or directory - if (Errno::ENOENT)
>
> so it seems clear that ruby isn't getting the entire -e argument,
> probably due to intereference by BASH. anyone know how to fix this?
>
> --su


 
Reply With Quote
 
Suresh Unadrad
Guest
Posts: n/a
 
      01-27-2007
Robert Klemme wrote:
>This looks like "ruby" was a shell script that does not properly quote
>arguments


Rob Biedenharn wrote:
> I'd start to suspect that you have "ruby"
> defined as an alias or something to make the args be evaluated twice.


Turns out that this was indeed the problem. When I started using the
ruby fltk extensions, I found that I had to replace /usr/bin/ruby with
the following script:

#!/bin/bash

export LD_ASSUME_KERNEL=2.3.98
exec /usr/bin/ruby1.8 $*


so that's why the arguments were being evaluated twice.

thanks everyone for your help!

--su

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Robert Klemme
Guest
Posts: n/a
 
      01-28-2007
On 27.01.2007 20:13, Suresh Unadrad wrote:
> Robert Klemme wrote:
>> This looks like "ruby" was a shell script that does not properly quote
>> arguments

>
> Rob Biedenharn wrote:
>> I'd start to suspect that you have "ruby"
>> defined as an alias or something to make the args be evaluated twice.

>
> Turns out that this was indeed the problem. When I started using the
> ruby fltk extensions, I found that I had to replace /usr/bin/ruby with
> the following script:
>
> #!/bin/bash
>
> export LD_ASSUME_KERNEL=2.3.98
> exec /usr/bin/ruby1.8 $*
>
>
> so that's why the arguments were being evaluated twice.
>
> thanks everyone for your help!



You can easily fix that script with this line which will do proper quoting:

exec /usr/bin/ruby1.8 "$@"

Kind regards

robert
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: Command line option syntax error. Type Command /? for Help chuckcar Computer Support 11 04-21-2009 09:59 PM
Re: Command line option syntax error. Type Command /? for Help Evan Platt Computer Support 1 04-18-2009 10:17 PM
Run Unix shell command $ parse command line arguments in python rkoida@yahoo.com Python 4 04-23-2005 04:42 AM
Need simple command for validating xml files at the command line Bernd Oninger XML 1 07-07-2004 06:20 PM
RUN/execute a Command-Line command from an ASP page. Lucas Cowald ASP .Net 4 10-23-2003 11:09 AM



Advertisments