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'
files
La 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 check
cuya 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) ]]
), hello
se imprime.
Aquí está la forma ampliada:
#!/bin/bash
files=( * )
if [[ ${#files[@]} -gt $(head -1 check) ]]; then
echo 'hello'
else
echo 'oh no'
fi