Cygwin gawk не передает данные по конвейеру при явном вызове

Cygwin gawk не передает данные по конвейеру при явном вызове

Это лучшее описание, которое я могу придумать. Извините, если оно немного эзотерично.

У меня установлен Cygwin на Win 10, сборка 16299, но он установлен без прав администратора; на этом ПК нет возможности установить его с правами администратора.

При выполнении следующей строки она запускается, когда gawk найден с использованием PATH, но не когда я явно указываю ему, где найти исполняемый файл. Есть предложения?

gawk "BEGIN { print \"echo Hello mum\" | \"./cygwin/sh\" }"
Hello mum

.\cygwin\gawk "BEGIN { print \"echo Hello mum\" | \"./cygwin/sh\" }"
gawk: cmd. line:1: fatal: can't open pipe `./cygwin/sh' for output (No such file or directory)

Каталог cygwin представляет собой подмножество команд cygwin вместе со всеми библиотеками dll, скопированными из \cygwin64\bin\

решение1

Предположим, вы запускаете команду из каталога `/home/user'.

При запуске gawk$CWD (текущий рабочий каталог) устанавливается в значение /home/user.

При запуске .\cygwin\gawk$CWD устанавливается в /home/user/cygwin. В этом случае ./cygwin/shуказывает на /home/user/cygwin/cygwin.

Давайте попробуем это:

.\cygwin\gawk "BEGIN { print \"echo Hello mum\" | \"./sh\" }"

Связанный контент