Bash

防止 awk 刪除變數中的“”(反斜杠)

  • September 19, 2019

我有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其中包含目前環境中變數的值,以名稱為鍵。

也與您的程式碼有關:

引用自:https://unix.stackexchange.com/questions/542560