awk가 변수에서 "\"(백슬래시)를 제거하지 못하도록 방지

awk가 변수에서 "\"(백슬래시)를 제거하지 못하도록 방지

다음과 같은 쉘 코드 줄이 있습니다.

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.MBTC:\Users\athena\Work\Project_10\00.MBT

나는 지금 길을 잃었고 여기서 배울 것이 많습니다.

답변1

awk전달받은 값을 어떻게 처리해야 하는지에 대한 질문입니다 -v. 전달된 문자열의 백슬래시를 해석합니다.

대신 환경 변수를 통해 전달하세요.

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

ENVIRONawk현재 환경에서 이름으로 입력되는 변수 값을 포함하는 연관 배열입니다 .

귀하의 코드와도 관련이 있습니다.

관련 정보