防止awk删除变量中的“\”(反斜杠)

Ken*_*ram 4 bash awk quoting variable

我有这行 shell 代码:

ls -1 *.mp3| awk -v here="$(cygpath -w $PWD)" -v source="$source" '{print "File Name: "$0"\n"here"\n"source}'
Run Code Online (Sandbox Code Playgroud)

不幸的是它输出:

File Name: Data 00053.mp3
C:UsersathenaWorkProject_10.MBT
Source: Converted from RAW
Run Code Online (Sandbox Code Playgroud)

这条线C:UsersathenaWorkProject_10.MBT 应该是C:\Users\athena\Work\Project_10\00.MBT

我现在迷路了,有很多东西要在这里学习。

Kus*_*nda 8

这是一个与如何awk处理使用传递的值有关的问题-v。它解释传递的字符串中的反斜杠。

相反,通过环境变量传递它:

here="$(cygpath -w "$PWD")" awk ... '{ print ... ENVIRON["here"] ... }'
Run Code Online (Sandbox Code Playgroud)

ENVIRON是一个关联数组,awk其中包含当前环境中变量的值,以名称为键。

也与您的代码有关: