총 단어 수를 추가하지 않고 파일의 단어 수를 파일에 추가하는 방법

총 단어 수를 추가하지 않고 파일의 단어 수를 파일에 추가하는 방법

매개변수(파일)의 줄 번호를 다른 파일에 추가하는 bash 스크립트를 실행 중입니다. 올바르게 수행되지만 "총 X" 행이 계속 표시됩니다. 여기서 X는 모든 행 번호를 더한 합계입니다. 매개변수 수가 특정 숫자 X보다 큰 경우 전체 숫자만 추가하려면 어떻게 매개변수를 추가할 수 있나요? 이것이 내가 현재 가지고 있는 것입니다:

wc -l $@ >> $1

답변1

다중 인수 형식에서는 합계를 억제할 수 없다고 생각합니다.

제가 생각할 수 있는 가장 간단한 방법은 필요할 때 단일 인수 형식을 고수하는 것입니다.

if [ "$#" -lt 5 ]
then
    for f in "$@"; do wc -l -- "$f"; done >>"$1"
else
    wc -l "$@" >> "$1"
fi

답변2

wc합계를 구하기에는 행 수가 너무 적으면 출력에서 ​​마지막 행을 제거하세요.

word_counts=$(wc -l -- "$@")
newline='
'
if [ "$#" -le 9 ]; then
  word_count=${word_count%"$newline"*}
fi
printf '%s\n' "$word_count" >>"$1"

다른 변수 대체 안과 주변에 큰따옴표가 있다는 점에 유의하세요 "$@". 이것이 없으면 스크립트는 공백(및 기타 특수 문자)이 포함된 파일 이름에서 아무런 이점도 없이 중단됩니다. 또한 파일 이름이 a로 시작하는 --경우 (그렇지 않은 경우 파일 이름은 옵션으로 해석됩니다)에 유의하세요.wc -l -- "$@"---wc

관련 정보