2017-03-18 1 views
0

줄/바이트/단어의 특정 값을 출력하는 가장 간단한 방법은 wc -l < filename.sh을 사용하는 것이지만 echo 명령과 함께 사용하려고하면 출력이 아닌 실제 명령 자체를 인쇄합니다.에코가있는 쉘에서 행 수 인쇄

내 의도 된 출력은 "이 파일에는 x 줄"이 있고 x는 줄 수이지만 echo "this line has" wc -l < filename.sh "lines"과 같은 것을 시도하면 명령 자체가 인쇄됩니다. 나는 또한 인용문을 깨지 않고 여러 다른 것들 중에서 이것을 시도했다.

그냥 에코와 함께 적용 할 수없는 명령일까요? 아니면 여기에서 아주 명백한 것이 빠져 있습니까?

+0

** 명령 대체 **를 제공하는 '$ (명령)'외에도 * 백틱 *이 사용 된 것을 볼 수 있습니다. '\'command \''(같은 일을 성취하기 위해 다소 오래 사용되지 않는 방법). 또한, 걱정하지 마세요. * man bash *에서 그리워하는 것이 더 분명합니다. –

답변

1
echo "this line has $(wc -l < filename.sh) lines" 
1

printf 만능이다

printf 'this file has %s lines\n' $(wc -l < filename.sh) 

$(command)는 인수로 command의 출력을 변환한다.

0

시도이 하나

echo "this file has `wc -l < filename.sh | awk '{print $1}'` lines" 

설명 :

wc -l < filename.sh

`` 먼저 명령을 실행하는 수단 공백없이

awk '{print $1}' 인쇄 수를 파일의 라인 수를 취득 결과를 얻으려면

0

서브 셸이나 파이프가 없으면 awk에는 입력 파일의 레코드 수를 보유하는 inbuilt 변수 NR이 있습니다. 출력은 END 블록 안에 쓰여지고 나머지는 결과를 출력하지 않으면 각 행의 행 번호가 인쇄됩니다.

awk 'END{print "This line has " NR " lines" }' file