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
我现在迷路了,有很多东西要在这里学习。
这是一个与如何awk
处理使用传递的值有关的问题-v
。它解释传递的字符串中的反斜杠。
相反,通过环境变量传递它:
here="$(cygpath -w "$PWD")" awk ... '{ print ... ENVIRON["here"] ... }'
Run Code Online (Sandbox Code Playgroud)
ENVIRON
是一个关联数组,awk
其中包含当前环境中变量的值,以名称为键。
也与您的代码有关: