현재 디렉터리의 파일 수가 파일 검사의 첫 번째 줄에 지정된 수보다 큰 경우 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