awk는 cshell의 달러 기호로 제공되는 변수를 허용합니다.

awk는 cshell의 달러 기호로 제공되는 변수를 허용합니다.

C 쉘 스크립트에서 bbb를 awk sub로 전달하려고 하는데 작동하지 않는 것 같습니다.

#!/bin/csh
set aaa=a
set bbb=b

#And I'm using it in awk sub

set ccc=`echo $aaa | awk '{sub("a",$bbb); print $0}'`

echo $ccc

하지만 메아리는 공허했고, 이유는 모르겠습니다.

$bbb를 "b"로 바꾸면 제대로 작동합니다.

답변1

셸 변수를 에 전달해야 합니다 awk.

set ccc=`echo $aaa | awk -v bb=$bbb '{sub("a",bb); print $0}'`

awk쉘 변수를 참조할 때 참조를 닫았다가 다시 엽니다.

set ccc=`echo $aaa | awk '{sub("a",'$bbb'); print $0}'`

관련 정보