![이 변수가 awk에 전달되지 않는 이유는 무엇입니까? [복사]](https://linux55.com/image/44073/%EC%9D%B4%20%EB%B3%80%EC%88%98%EA%B0%80%20awk%EC%97%90%20%EC%A0%84%EB%8B%AC%EB%90%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
중복 가능성:
awk의 외부 변수
아래에서 이 변수를 전달하는 방법은 무엇입니까?
이것은 작동하지 않습니다:
fname=testfile.txt
lsof | awk '/deleted/&&/$fname/ {print $4}' *----no output*
이것이 작동하는 동안:
lsof | awk '/deleted/&&/testfile.txt/ {print $4}'
3r
답변1
이는 쉘 변수가 작은따옴표로 확장되지 않기 때문에 발생합니다. 패턴을 다음과 같이 전달하려면 awk
with를 사용하세요 .-v
awk
fname=testfile.txt
lsof | awk -v pattern="$fname" '/deleted/ && $0 ~ pattern { print $4 }'