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

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

我有这行 shell 代码:

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

不幸的是它输出:

File Name: Data 00053.mp3
C:UsersathenaWorkProject_10.MBT
Source: Converted from RAW

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

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

答案1

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

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

here="$(cygpath -w "$PWD")" awk ... '{ print ... ENVIRON["here"] ... }'

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

还与您的代码相关:

相关内容