Redirecting stderr to stdout through pipe doesn't work the way it does in Linux
Wed Dec 5 17:42:00 GMT 2018
On 12/5/2018 10:11 AM, David Karr wrote:
> On Tue, Dec 4, 2018 at 12:52 PM Marco Atzeri <email@example.com> wrote:
>> Am 04.12.2018 um 21:41 schrieb David Karr:
>>> "CYGWIN_NT-6.1 WACDTL03DK068X 2.9.0(0.318/5/3)"
>>> I installed a version of "kubectl" for windows, and I use it extensively
>>> Cygwin bash for scripting command-line automation. In general, this works
>>> perfectly fine. I even use the same scripting in a Linux VM.
>>> I'm seeing an issue with one script that works fine in the Linux VM, but
>>> not in Cygwin.
>>> The command line is approximately this:
>>> kubectl exec pod -c container -i -t -- grep "string"
>>> 2>&1 | sed -e 's/^propname=//'
>>> In Linux, this works perfectly fine. In Cygwin, it says "stdout is not a
>>> I haven't updated my local Cygwin installation for quite a while. I'd
>>> prefer not to, unless there is a strong chance this kind of thing would
>> as kubectl is not a Cygwin program, it is not aware of cygwin pty.
>> You can try to use winpty to overcome the problem.
> It turns out that not only had I already used winpty for similar
> functionality, it was actually in place in the pipeline when I tried to do
> this. When I turned on debugging output, it showed that kubectl was
> already being wrapped by winpty when it reported "stdout is not a tty".
> However, this was one shell script wrapper deeper than I usually call it.
> Does it matter whether winpty is called from the shell script I'm calling,
> or from the script being called by the script I'm calling?
Your query got me interested in looking and I believe that winpty needs
to be at the front of all the commands so that it can communicate with
mintty properly. To overcome the need to remember you could add an
alias to execute the command; `alias FOO="winpty FOO"'.
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin