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'
files
array 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 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 da 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