디렉토리의 파일 수가 파일의 첫 번째 줄에 있는 수보다 크면 "hello"를 인쇄합니다.

디렉토리의 파일 수가 파일의 첫 번째 줄에 있는 수보다 크면 "hello"를 인쇄합니다.

현재 디렉터리의 파일 수가 파일 검사의 첫 번째 줄에 지정된 수보다 큰 경우 hello를 인쇄하는 명령줄을 작성하세요.

이것은 잘 작동하지만 하나의 명령줄을 원합니다. 어떤 아이디어가 있나요?

firstline=$(head -1 check)
allfiles=$(ls | wc -l)
echo $allfiles  $firstline

if (($allfiles > $firstline)); then
     echo "hello"
else 
     echo "oh no"
fi

답변1

다음 하나의 라이너를 사용할 수 있습니다.

files=( * ); [[ ${#files[@]} -gt $(head -1 check) ]] && echo 'hello' || echo 'oh no'

files배열에는 현재 디렉터리의 파일이 포함되므로 ${#files[@]}배열의 요소, 즉 현재 디렉터리에 있는 파일 수를 표시합니다.

check첫 번째 줄이 숫자인 파일 은 head -1 check.

확장된 형태는 다음과 같습니다.

check마지막으로 파일 개수가 ( [[ ${#files[@]} -gt $(head -1 check) ]]) 첫 번째 줄의 개수보다 크면 hello인쇄됩니다.

확장된 형태는 다음과 같습니다.

#!/bin/bash
files=( * )
if [[ ${#files[@]} -gt $(head -1 check) ]]; then
    echo 'hello'
else
    echo 'oh no'
fi

관련 정보