明確呼叫時 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\" }"

相關內容