Imprima "hola" si el número de archivos en un directorio es mayor que el número en la primera línea de un archivo

Imprima "hola" si el número de archivos en un directorio es mayor que el número en la primera línea de un archivo

Escriba una línea de comando que imprima hola si el número de archivos en el directorio actual es mayor que el número especificado en la primera línea de verificación de archivos.

Esto funciona bien pero quiero una línea de comando. ¿Algunas ideas?

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

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

Respuesta1

Puedes usar este delineador:

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

filesLa matriz contendrá los archivos del directorio actual, por lo que ${#files[@]}muestra los elementos de la matriz, es decir, el número de archivos en el directorio actual.

El archivo checkcuya primera línea es un número se extrae mediante head -1 check.

Aquí está la forma ampliada:

Finalmente, si el número de archivos es mayor que el número en la primera línea de check( [[ ${#files[@]} -gt $(head -1 check) ]]), hellose imprime.

Aquí está la forma ampliada:

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

información relacionada