&& should work in a system call?

Hello.
It appears this run both commands, as expected (the first one fails):

system(“ffmpeg -i || ls”)

so should this run both commands, if the first succeeds?

system(“ls && ls”)
ls: &&: No such file or directory
ls: ls: No such file or directory
=> false

It doesn’t seem to…but I could be mis understanding…
-r

system(“ls && ls”)
ls: &&: No such file or directory
ls: ls: No such file or directory
=> false

I see now that it works in Linux, but not windows. I’m guessing this
is a bug, but feedback is welcome…
-r

system(“ls && ls”)
benchmark.rb dense_long_to_int.cpp Makefile
sparse_long_to_double.cpp
benchmark.rb dense_long_to_int.cpp Makefile
sparse_long_to_double.cpp
=> true

2012/10/10 Roger P. [email protected]:

system(“ls && ls”)
ls: &&: No such file or directory
ls: ls: No such file or directory
=> false

I see now that it works in Linux, but not windows. I’m guessing this
is a bug, but feedback is welcome…

There is not ls command on Windows (unless you install cygwin /
mingw yourself). You’re looking for dir.

– Matma R.

system(“ls && ls”)
ls: &&: No such file or directory
ls: ls: No such file or directory
=> false

I see now that it works in Linux, but not windows. I’m guessing this
is a bug, but feedback is welcome…

There is not ls command on Windows (unless you install cygwin /
mingw yourself). You’re looking for dir.

In this case, I have one:

$ whichr ls
higher in the list is executed first
C:\installs\devkit451\devkit451\bin\ls.exe
C:\Program Files (x86)\Git\bin\ls.exe

But it seems you can substitute any executable name in there to get
the offending behavior…
-r

filed Backport #7143: system("ls && ls") should work in windows - Backport193 - Ruby Issue Tracking System

On 11/10/2012 05:26, Roger P. wrote:

$ whichr ls
higher in the list is executed first
C:\installs\devkit451\devkit451\bin\ls.exe
C:\Program Files (x86)\Git\bin\ls.exe

But it seems you can substitute any executable name in there to get
the offending behavior…
-r

This is purely an educated guess… it possibly matters whether you have
a SHELL environment variable set. If you do and it’s set to bash or sh
or csh, I think that this will work correctly. If it’s not set, you’ll
get the Windows shell: cmd.exe - I don’t think that it will grok &&.

Graham

Hm, interesting; I didn’t run the code before, but I tried now and
confirm your observations.

– Matma R.

Roger P. wrote in post #1079580:

This is purely an educated guess… it possibly matters whether you have a
SHELL environment variable set. If you do and it’s set to bash or sh or csh,
I think that this will work correctly. If it’s not set, you’ll get the
Windows shell: cmd.exe - I don’t think that it will grok &&.

Yes, I was surprised to learn that, at least with windows OS’s I’ve
tried, cmd.exe does understand &&. I’ll be honest it surprised me

Indeed, cmd.exe sometimes surprises us in a good way

C:\mruby-git>cd build && cmake -G Ninja … && ninja all test
– Build type not set, defaulting to ‘RelWithDebInfo’
– The C compiler identification is GNU 4.7.2
– Check for working C compiler using: Ninja
– Check for working C compiler using: Ninja – works

Total: 481
OK: 481
KO: 0
Crash: 0
Time: 0.004001 seconds

This is purely an educated guess… it possibly matters whether you have a
SHELL environment variable set. If you do and it’s set to bash or sh or csh,
I think that this will work correctly. If it’s not set, you’ll get the
Windows shell: cmd.exe - I don’t think that it will grok &&.

Yes, I was surprised to learn that, at least with windows OS’s I’ve
tried, cmd.exe does understand &&. I’ll be honest it surprised me
:slight_smile:
-r