다음과 같은 쉘 코드 줄이 있습니다.
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
현재 환경에서 이름으로 입력되는 변수 값을 포함하는 연관 배열입니다 .
귀하의 코드와도 관련이 있습니다.