이 줄에서 "wc -l"을 어떻게 사용할 수 있나요? 쉘 스크립트의 라인 수를 계산하고 카운트 값만 출력합니다.

이 줄에서 "wc -l"을 어떻게 사용할 수 있나요? 쉘 스크립트의 라인 수를 계산하고 카운트 값만 출력합니다.
#!/bin/bash

/abc/qwerty/AAAooo/testing/CBA_Car/Config/Test_Ctr.env

OUTPUT_FILE_NAME=$1
DATE=$2

cp /abc/section/AAAooo/CBACenter/slack_2010-05-1.txt ${OUTPUT_FILE_NAME}

이 스크립트에서 카운트를 수행하고 카운트만 출력하려면 어떻게 해야 합니까? 어떻게든 이 셸 스크립트의 줄 수를 계산하고 개수 값을 출력할 수 있어야 합니다. 내 생각에는 다음과 같은 작업을 수행해야 할 수도 있습니다.

cat filename.txt | wc -l

그러나 구문이 올바르게 작동하도록 올바르게 입력하는 방법을 잘 모르겠습니다. 계속해서 오류가 발생합니다. 다음 줄에서 계산을 수행해야 합니다.

cp /abc/section/AAAooo/CBACenter/slack_2010-05-1.txt ${OUTPUT_FILE_NAME}

답변1

cp(보통) 아무것도 출력하지 않습니다. 를 사용하면 cp -v복사되는 각 파일의 이름이 출력되지만 내용은 출력되지 않습니다.

UNIX와 유사한 환경은 정확히 하나의 작업을 수행하는 도구를 사용하는 데 매우 능숙하고 이를 잘 수행하는 경우가 많습니다. 파일의 줄 수 계산(작업 wc)은 파일을 한 위치에서 다른 위치로 복사하는 도구의 범위 내에 있지 않습니다(예:) cp.

파일의 줄 수를 세고 복사하려면 이 두 가지 작업을 별도로 수행해야 합니다.

$ cp /old/path/to/file /new/path/to/file
$ filelength="$( wc -l < /path/to/file )"

답변2

다음 방법으로 하면 됩니다

#!/bin/bash
cp $1 $2
wc -l $2

위 스크립트는 $1(file1)의 내용을 $2(file2)에 복사한 다음 두 번째 파일에 복사합니다. file2의 줄 수를 인쇄합니다.

다음 스크립트를 실행해야 합니다.

sh scriptname file1 file2

$1=file1
$2=file2

관련 정보