From: Ethan Mallove (ethan.mallove_at_[hidden])
Date: 2007-09-17 12:12:48


I am stuck trying to capture STDERR using &shell().
I am able to capture it using tcsh, but since &shell()
is sh-based, I need some sh-magic to get this working.

  tcsh $ mpinfo -V |& cut -d' ' -f6-8
  10 Mar 2006
  bash-3.00$ /opt/SUNWhpc/HPC6.0/bin/mpinfo -V 2>&1 cut -d' ' -f6-8
  mpinfo: Sun HPC ClusterTools 6 10 Mar 2006 CRE 3.0
  bash-3.00$ tcsh -c '/opt/SUNWhpc/HPC6.0/bin/mpinfo -V |& cut -d" " -f6-8'
  10 Mar 2006

No luck using "tcsh -c" with &shell().

  Value: bogus
  Evaluating: &shell("tcsh -c '/opt/SUNWhpc/HPC6.0/bin/mpinfo -V |& cut -d\"
     \" -f6-8'")
  Replacing vars from section MTT: &shell("tcsh -c
     '/opt/SUNWhpc/HPC6.0/bin/mpinfo -V |& cut -d\" \" -f6-8'")
  --> Prefix now:
  --> Remaining (after &): shell("tcsh -c '/opt/SUNWhpc/HPC6.0/bin/mpinfo -V
     |& cut -d\" \" -f6-8'")
  --> Found func name: shell
  --> Found beginning of arguments: "tcsh -c '/opt/SUNWhpc/HPC6.0/bin/mpinfo
     -V |& cut -d\" \" -f6-8'")
  --> Initial param search: "tcsh -c '/opt/SUNWhpc/HPC6.0/bin/mpinfo -V |&
     cut -d\" \" -f6-8'")
  --> Loop: trimmed search: "tcsh -c '/opt/SUNWhpc/HPC6.0/bin/mpinfo -V |&
     cut -d\" \" -f6-8'")
  --> Examining char: " (pos 0)
  --> Found beginning quote
  --> Found last quote
  --> Examining char: ) (pos 66)
  --> Found end of arg (pos 66)
  Found argument: "tcsh -c '/opt/SUNWhpc/HPC6.0/bin/mpinfo -V |& cut -d\" \"
     -f6-8'"
  --> Remainder:
  --> Calling: $ret = MTT::Values::Functions::shell("tcsh -c
     '/opt/SUNWhpc/HPC6.0/bin/mpinfo -V |& cut -d\" \" -f6-8'");
  &shell: got tcsh -c '/opt/SUNWhpc/HPC6.0/bin/mpinfo -V |& cut -d" " -f6-8'
  &shell: returning
  --> After eval(string), remaining:
  Replacing vars from section MTT:
  Got final version before escapes:

???

-Ethan