从Windows批处理文件调用GAWK -V PWD =%CD%时,我会丢失这些斜率



我想从Windows脚本(批处理文件)调用尴尬/gawk脚本。

我也想传递当前目录。所以我有以下行:

gawk -v pwd=%cd% -f myscript.awk sometextfiletoprocess.txt

在批处理文件中,如果我做 echo %cd%,我得到" c: dev work pic "

但是在尴尬脚本中,我在开始时有以下内容:

BEGIN {
    print "pwd: " pwd
}

这给出了输出" C:devworkpic" - 因此您可以看到我正在失去所有斜线。我想尴尬不喜欢" "吗?我该如何退缩?

edit 我尝试在%cd%: gawk -v pwd="%cd%" -f myscript.awk sometextfiletoprocess.txt上使用报价。这没有效果:(

-v解释逃生序列(请参阅http://cfajohnson.com/shell/cus-faq-2.html#q24),所以我猜这就是导致您的问题的原因。p>如果您想要任何东西,包括从字面上传递到尴尬的逃生,则应使用环境:

pwd="foobar" awk 'BEGIN{pwd=ENVIRON["pwd"]; ...}'

或将其作为arg和文件名一起传递:

awk 'BEGIN{pwd=ARGV[2]; ARGV[2]=""; ARGC--; ...}' file "foobar"

例如:

$ cat tst.awk
BEGIN {
    print "pwd1:", pwd1
    print "---"
    pwd2=ENVIRON["pwd2"]
    print "pwd2:", pwd2
    print "---"
    pwd3=ARGV[ARGC-1]; ARGV[ARGC-1]=""; ARGC--
    print "pwd3:", pwd3
}
$ pwd2='c:devworkPIC' awk -v pwd1='c:devworkPIC' -f tst.awk 'c:devworkPIC'
awk: warning: escape sequence `d' treated as plain `d'
awk: warning: escape sequence `w' treated as plain `w'
awk: warning: escape sequence `P' treated as plain `P'
pwd1: c:devworkPIC
---
pwd2: c:devworkPIC
---
pwd3: c:devworkPIC

修改上述UNIX语法以执行正确的窗口咒语(或者更好地安装/使用Cygwin)。

最新更新