Bash에서 가변 인수를 사용하여 grep 명령을 구성하는 방법은 무엇입니까?

Bash에서 가변 인수를 사용하여 grep 명령을 구성하는 방법은 무엇입니까?

Bash에서 다음과 같은 작업을 수행하려고 합니다.

grep ( date | awk '{print "2006-" $6}' ) /some/file/here

하지만 그 구문은 올바르지 않습니다.

목표는 2011년이 현재 연도인 2006-2011 패턴에 대해 /some/file/here를 grep하는 것입니다.

답변1

grep "$(date | awk '{print "2006-" $6}')" /some/file/here

"..."내용을 하나의 인수로 유지합니다(공백이 있더라도).

$(...)"명령 대체"를 위한 것입니다. 여기서는 포함된 명령을 실행하는 stdout이 원래 명령줄에 배치됩니다. (또 다른 구문인 , `...`도 일반적이지만 중첩하기가 훨씬 어렵습니다.)

더 쉬움:

grep "$(date +'2006-%Y')" /some/file/here

여기서는 날짜의 기능을 사용하여 출력 형식을 임의로 지정합니다.

이들 중 어느 것도 2006-2011 범위의 연도와 일치하지 않으며 리터럴 문자열 "2006-2011"과 일치합니다. 어떤 연도와 일치시키고 싶다면 알려주십시오.

관련 정보