#!/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
Le problème que je vais avoir est ici:Comment utiliser un numéro d'argument variable dans un script bash?
#loop through additional filetypes and append
num=1
while [ $num -lt $# ]
do
((num++))
types=$types' -o -name *.'>>$$num<<
done
Je veux simplement itérer sur tous les arguments non compris la première, devrait être assez facile, mais je suis un moment difficile déterminer comment faire ce travail
cela fonctionne, mais je ne comprends pas pourquoi le! est requis, il semble que $ {num} devrait fonctionner. Comment liriez-vous cette déclaration? ressemble à "non num" mais cela n'a pas de sens –
$ {num} est le même que $ num. $ {! num} est la notation pour une variable indirecte. Il semblerait que \ $$ num fonctionnerait également, bien que, d'après ce que j'ai lu, "la notation $ {! Variable} soit largement supérieure à l'ancienne 'eval var1 = \ $$ var2'" (http: // www.faqs.org/docs/abs/HTML/bash2.html) – amertune