Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , 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 Subject: Re: Piping output from sqlplus Date: Thu, 16 Dec 2004 15:55:05 -0500 Lines: 69 Message-ID: References: <20041216204005 DOT GA26201 AT trixie DOT casa DOT cgf DOT cx> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit 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 <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/