#!/bin/bash
# Script to output the total size of requested filetype recursively
# Error out if no file types were provided
if [ $# -lt 1 ]
then
echo "Syntax Error, Please provide at least one type, ex: sizeofTypes {filetype1} {filetype2}"
exit 0
fi
#set first filetype
types="-name *."$1
#loop through additional filetypes and append
num=1
while [ $num -lt $# ]
do
((num++))
types=$types' -o -name *.'$$num
done
echo "TYPES="$types
find . -name '*.'$1 | xargs du -ch *.$1 | grep total
El problema que estoy teniendo es aquí:¿Cómo uso un número de argumento variable en un script bash?
#loop through additional filetypes and append
num=1
while [ $num -lt $# ]
do
((num++))
types=$types' -o -name *.'>>$$num<<
done
Quiero simplemente iterar sobre todos los argumentos sin incluir el primero, debería ser bastante fácil, pero estoy teniendo un momento difícil encontrar la manera de hacer este trabajo
esto funciona, pero no entiendo por qué! es obligatorio, parece que $ {num} debería funcionar. ¿Cómo leerías esa declaración? parece "no num", pero eso no tiene sentido –
$ {num} es lo mismo que $ num. $ {! num} es la notación de una variable indirecta. Parece que \ $$ num también funcionaría, aunque, según lo que he leído, "la notación $ {! Variable} es muy superior a la anterior 'eval var1 = \ $$ var2'" (http: // www.faqs.org/docs/abs/HTML/bash2.html) – amertune