Imprime “ola” se o número de arquivos em um diretório for maior que o número na primeira linha de um arquivo

2

Gravar linha de comando que imprime oi se o número de arquivos no diretório atual for maior que o número especificado na primeira linha de verificação de arquivo.

Isso funciona bem, mas eu quero uma linha de comando. Alguma idéia?

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

if (($allfiles > $firstline)); then
     echo "hello"
else 
     echo "oh no"
fi
    
por Martin Yeboah 24.06.2015 / 18:50

1 resposta

4

Você pode usar este forro:

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

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

O arquivo check cuja 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 na primeira linha de check ( [[ ${#files[@]} -gt $(head -1 check) ]] ), hello será impresso.

Aqui está o formulário expandido:

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