Cygwin gawk 在明确调用时不会进行管道传输

Cygwin gawk 在明确调用时不会进行管道传输

这是我能想到的最好的描述,如果有点深奥的话请原谅。

我在 Win 10,Build 16299 上安装了 cygwin,但它是使用非管理员选项安装的;这台电脑上没有以管理员身份安装的选项。

执行以下行时,如果使用 PATH 找到 gawk,它就会运行,但当我明确告诉它在哪里找到可执行文件时,它不会运行。有什么建议吗?

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 命令的子集,以及从 \cygwin64\bin\ 复制的所有 dll

答案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\" }"

相关内容