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...
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 the name. When the file exists it appears to do what you probably 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 Ruby on Rails!"
3. Follow the guidelines on the "Congratulations, you've put Ruby on Rails!" screen
Sorry, I didn't make a new .txt file, but just used what was handy.
On Jan 26, 2007, at 4:55 PM, Wolfgang Nádasi-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, 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...
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
···
On 26.01.2007 23:08, Suresh Unadrad wrote:
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?
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)
jab3:~% cat > wombat.txt
I wish I had a fish.
I wish I had a wombat.
Fish 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
the file 'if' doesn't exist. You could try something like this and see
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.
-jab3
···
On Friday 26 January 2007 17:08, Suresh Unadrad <Suresh Unadrad <sunadrad@yahoo.com>> wrote:
$ 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
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:
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:
The "$@" construct will help to maintain the quoting of the arguments
which are passed in.
For example:
script1
···
-------
#!/bin/bash
for arg in $*
do
echo arg=$arg
done
script2
-------
#!/bin/bash
for arg in "$@"
do
echo arg=$arg
done
% chmod +x script1 script2
% ./script1 "this is the first arg" "this is the second arg"
arg=this
arg=is
arg=the
arg=first
arg=arg
arg=this
arg=is
arg=the
arg=second
arg=arg
% ./script2 "this is the first arg" "this is the second arg"
arg=this is the first arg
arg=this is the second arg
You can easily fix that script with this line which will do proper quoting:
exec /usr/bin/ruby1.8 "$@"
Kind regards
robert
···
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: