Напишите командную строку, которая выведет 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