문제

다음과 같이 정의한 AWK 스크립트가 있습니다.

#!/usr/bin/env awk
BEGIN { if (!len) len = 1; end = start + len }
{ for (i = start; i < end; i++) { print $1 } }

나는 그것을 그대로 저장했다 columns 그리고 chmod +x'D. 나는 그것을 호출하고 싶다 start 그리고 end 파일을 통과하는 것으로 정의됩니다. 나는 이것이 효과가 있다고 생각했다 :

cat some_file | columns -v start=2

그러나 그렇지 않습니다. 돕다!

도움이 되었습니까?

해결책

사용해보십시오 :

#!/usr/bin/awk -f

통역사로서

다른 팁

ENV는이 문제를 처리하는 가장 쉬운 방법입니다.

#!/usr/bin/env -S awk -f

더 많은 옵션을 추가하고 논증에 대한 간섭을 보장하고 Awk의 주장을 보장합니다.

#!/usr/bin/env -S awk -F: -f ${_} --
BEGIN {
    # delete argv[1], which == ENVIRON[_]
    delete ARGV[1]
} # rest of my awk program

ENV에는 POSIX 표준이 있으므로이 Shbang은 Unixen에서 비표준 Shbang 구현의 어려움을 해결해야합니다.

편집하다

이것을 쓴 후 나는 '-s'가 비 포스 준수 freebsd env 확장임을 깨달았습니다.. 따라서 쉘 래퍼는 아마도 불행한 길일 것입니다.

아래는이 문제에 대한 답입니다.

#!/bin/awk -f 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top