En revanche j'ai un petit soucis; le script fonctionne si les fichiers passé en paramètres sont dans le répertoire courant
sinon lorsqu'on fait [ -f fichier ] il n'est pas capable de détecter qu'il doit aller regarder dans l'archive plutôt que dans le répertoire local.
- Code: Tout sélectionner
debut=0;
val=0;
# cas avec option
if [ $1 = -p ]
then
for i in `tar -tf $2`
do
if [ $debut -eq 0 ]
then
shift 2;
debut=1;
fi
for k in $* #on parcourt les paramètres décalés
do
if [ -d $k ] #on ne vérifie pas autre chose le fichier n'est pas modifié
then
echo "Usage: $k n'est pas un fichier accessible";
exit 3;
fi
if [ -f $k ]
then
if [ `basename $i` = $k ]
then
echo $i;
val=`expr $val + 1`;
fi
fi
done
done
if [ $val -eq 0 ]
then
echo "Aucun fichier correspondant";
exit 4;
fi
exit 0; #retour 0 si au moins un fichier correspondant
fi
La solution serait de pouvoir bêtement se déplacer dans l'archive comme dans de simples dossiers; mais cd ne marche pas sur une archive.
De plus, je ne dois pas "désarchivé" dans ce script là.
Techniquement si j'enlève le test; le script fonctionne bien; mais on pourrait imaginer le cas farfelu où l'utilisateur archiverait un dossier avec un nom fichier.txt et là le script ne ferait pas la différence; je pense donc qu'il est nécessaire de faire ce test, pour ça une seule solution il faut bien pénétrer dans l'archive.
J'ai parcouru à peu près toutes les options de la commande tar; mais je n'ai rien trouvé capable de cela.