Bash
防止 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
我現在迷路了,這裡有很多東西要學。
這是一個與如何
awk
處理使用傳遞的值有關的問題-v
。它解釋傳遞的字元串中的反斜杠。相反,通過環境變數傳遞它:
here="$(cygpath -w "$PWD")" awk ... '{ print ... ENVIRON["here"] ... }'
ENVIRON
是一個關聯數組,awk
其中包含目前環境中變數的值,以名稱為鍵。也與您的程式碼有關: