Imprima "olá" se o número de arquivos em um diretório for maior que o número na primeira linha de um arquivo

Imprima "olá" se o número de arquivos em um diretório for maior que o número na primeira linha de um arquivo

Escreva a linha de comando que imprime olá se o número de arquivos no diretório atual for maior que o número especificado na primeira linha da verificação de arquivo.

Isso funciona bem, mas eu quero uma linha de comando. Alguma ideia?

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

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

Responder1

Você pode usar este forro:

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

filesarray conterá os arquivos do diretório atual, portanto ${#files[@]}mostra os elementos do array, ou seja, o número de arquivos no diretório atual.

O arquivo checkcuja primeira linha é um número é extraído por head -1 check.

Aqui está o formulário expandido:

Finalmente, se o número de arquivos for maior que o número da primeira linha de check( [[ ${#files[@]} -gt $(head -1 check) ]]), helloserá impresso.

Aqui está o formulário expandido:

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

informação relacionada