EDIT: Voici mon code mis à jour:Bash Script "[: not found" erreurs, et comment écrire une ou déclaration
#!/bin/sh
files=`ls`
if [ $# -ne 1 -o -f $1 ]
then
echo "Usage: $0 <directory>"
exit 1
fi
if [ ! -e $1 ]
then
echo "$1 not found"
exit 1
elif [ -d $1 ]
then
cd $1
for f in $files
do
if [ ! -d "$f" ]
then
if [ ! -s "$f" ]
then
rm -r "$f"
echo "File: $f was removed."
else
continue
fi
fi
done
echo "Name\t\tLinks\t\tOwner\t\tDate"
for f in $files
do
find "$f" -type f -printf "%f\t\t %n\t\t %u\t %TH %Tb %TY\n"
done
exit 0
fi
je fixe tous les problèmes d'espacement, a changé # bin/sh à #/bin/bash, et ajouté des guillemets à "$ f". Cependant, je reçois encore beaucoup d'erreurs.
ava @ Kosh: ~/test $ ./delDir d1 rm: ne peut pas supprimer
d1': No such file or directory File: d1 was removed. rm: cannot remove
delDir ': Aucun fichier ou fichier répertoire: delDir a été supprimé. rm: impossible de supprimerdelDir2': No such file or directory File: delDir2 was removed. rm: cannot remove
e1 ': Non tel fichier ou répertoire Fichier: e1 a été supprimé . rm: impossible de supprimere2': No such file or directory File: e2 was removed. rm: cannot remove
make_d1 ': Aucun fichier ou répertoire de ce type Fichier: make_d1 a été supprimé. Nom \ t \ tLinks \ t \ Towner \ t \ TDate trouver: d1: Aucun fichier ou répertoire Recherche: delDir: Aucun fichier ou répertoire trouver: delDir2: Aucun fichier ou répertoire Recherche: e1: Non fichier ou répertoire Recherche: e2: Aucun fichier ou répertoire Recherche: make_d1: Aucun fichier ou répertoire ne1 2
ava 22 novembre 2009 NE2
2 ava 22 novembre 2009
Est-ce que quelqu'un sait Qu'est-ce que je fais d'autre?
Voici mon code:#!/bin/sh files=`ls` if [ $# -ne 1 ] then echo "Usage: $0 <directory>" exit 1 fi if [ ! -e $1 ] then echo "$1 not found" exit 1 elif [ -d $1 ] then cd $1 for f in $files do if [! -d $f] then if [ ! -s $f ] then rm-r $f echo "File: $f was removed." else continue fi fi done echo "Name\t\tLinks\t\tOwner\t\tDate" for f in $files do find $f -type f -printf "%f\t\t %n\t\t %u\t %TH %Tb %TY\n" done exit 0 fi
Voici mes questions:
Si j'exécute le script avec quelque chose qui est pas un fichier ordinaire et n'est pas un répertoire I voulez-le dire "Utilisation: répertoire de noms de fichiers" (voir ligne 5). Je sais que je peux le faire avec 2 si les déclarations, mais est-il possible de créer une déclaration ou pour cela dans bash?
Quand je lance le script que je continue à recevoir des erreurs comme ceci:
./delDir: 39: [: not found ./delDir: 39: [: not found ./ delDir: 39: [!: non trouvé ./delDir: 39: [!: pas trouvé ./delDir: 39: [!: non trouvé ./delDir: 39: [!: non trouvé ./delRép: 39: [!: Non trouvé ./delDir: 39: [!: pas trouvé ./delDir: 39: [!: Pas trouvé ./delDir: [:!: Not found Nom
Liens propriétaire Date find: d1: Aucun fichier ou répertoire trouver: delDir: Aucun fichier ou trouver répertoire: delDir2: Aucun fichier ou répertoire e1 1
ava 22 novembre 2009 e2
1 ava 22 novembre 2009 Recherche: make_d1: Aucun fichier ou répertoire ne1 2
ava 22 novembre 2009 NE2
2 ava 22 novembre 2009
Je crois que je am obtenir ces erreurs parce que la boucle for est d'abord pour le fichier que l'utilisateur a tapé (le répertoire dans lequel il a été changé) et ne peut pas le trouver. Comment peut-on résoudre ce problème? 3. Y a-t-il d'autres erreurs que vous pouvez voir?
Ah ... ok je vois. J'essaie ça maintenant. –
Ah ça l'a corrigé, merci Dave. –