Вывести «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

Связанный контент