Estoy tratando de escribir una función bash simple que tome, como argumentos, varios archivos y / o directorios. Debería:
- Califique completamente los nombres de archivo.
- Clasifícalos.
- Eliminar duplicados.
- Imprime todo lo que realmente existe.
- Devuelve el número de archivos inexistentes.
Tengo un script que casi hace lo que quiero, pero se cae en la clasificación. El valor de retorno del script tal como está es correcto, pero el resultado no lo está (sin clasificar y duplicados). Si descomento la | sort -u
declaración como se indica, la salida es correcta pero el valor de retorno es siempre 0
.
NB Las soluciones más simples para resolver el problema son bienvenidas, pero la pregunta es realmente por qué ocurre esto en el código que tengo. Es decir, ¿por qué agregar la tubería aparentemente detiene la secuencia de comandos que incrementa la variable r
?
Aquí está el guión:
function uniqfile
{
local r=0
for arg in "$@"
do
readlink -e "$arg" || (( ++r ))
done #| sort -u ## remove that comment
return $r
}
for arg in "$@"
afor arg
. "Si 'en PALABRAS ...;' no está presente, entonces se asume 'en "$ @"' ". - ayuda para