delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2004/12/16/16:19:39

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
To: cygwin AT cygwin DOT com
From: Chuck <skilover AT softhome DOT net>
Subject: Re: Piping output from sqlplus
Date: Thu, 16 Dec 2004 15:55:05 -0500
Lines: 69
Message-ID: <cpssnc$8il$1@sea.gmane.org>
References: <cpsr6t$45c$1 AT sea DOT gmane DOT org> <20041216204005 DOT GA26201 AT trixie DOT casa DOT cgf DOT cx>
Mime-Version: 1.0
X-Complaints-To: usenet AT sea DOT gmane DOT org
X-Gmane-NNTP-Posting-Host: f12d06i01.advancemags.com
User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206)
In-Reply-To: <20041216204005.GA26201@trixie.casa.cgf.cx>
X-IsSubscribed: yes

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Christopher Faylor wrote:
| On Thu, Dec 16, 2004 at 03:29:16PM -0500, Chuck wrote:
|
|>I'm having a strange problem reading the output from sqlplus in Cygwin.
|>Sqlplus is a windows command line program used to access oracle
|>databases. My command looks something like this...
|>
|>sqlplus -s <<! | read line
|>user/password AT database
|>set pagesize 0 linesize 200 feedback off tab off
|>select col1||chr(9)||col2
|
|>from table;
|
|>!
|>
|>This should output one line to stdout with the two values separated by a
|>tab character. The read command should read it into the variable $line.
|>On my Solaris system it works perfectly. In Cygwin, $line is empty.
|
|
| Just to demonstrate what you're seeing without the sqlplus requirement:
|
|   bash$ echo hello | read line
|   bash$ echo $line
|
|   bash$
|
| The reason for the behavior is apparently that when you use read in a
| pipe like this bash and ash fork a separate process so the variable only
| exists very briefly in that process and `line' is never defined in the
| main process.
|
| zsh does what you'd expect, so if you can use zsh instead of bash, that
| would be a solution.  Otherwise, you probably will have to experiment
| with setting IFS and using either $(sqlplus) or `sqlplus` .
|
| cgf
|

Actually I'm using ksh.

$ echo hello | read LINE
$ echo $LINE

$

Looks like you said. I know this is not the expectd behaviour for ksh
though. On Solaris ksh ...

Solaris$ echo hello | read LINE
Solaris$ echo $LINE
hello
Solaris$

Why would ksh behave differently under Cygwin than under Solaris?


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (MingW32)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFBwfYpzIf+rZpn0oQRAtnYAJ9jBdGzER29YzWnMOmREeQJv+fasQCdGFQc
jRPqneau2f7PFhDXtwKGsn4=
=bY4I
-----END PGP SIGNATURE-----


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019