Script shell - boucle for
charline159
Messages postés
216
Statut
Membre
-
Exileur Messages postés 1621 Statut Membre -
Exileur Messages postés 1621 Statut Membre -
Bonjour,
Mon but est de rélaliser un script où l'utilisateur indiquent des "fichier" qu'il veut renommer en "fichier-old".
Le script fonctionne mais j'ai deux soucis:
- si j'indique un fichier qui n'existe pas, alors le script me demande bel et bien une saisie. Mais si j'indique plusieurs fichiers dont au moins un qui n'existe pas, le script plante et indique "ligne 5: opérateur binaire attendu"
- à la ligne 7, l'utilisateur ne peut indiquer qu'UN seul fichier. Comment faire pour qu'elle en prenne en compte plusieurs?
Merci pour votre aide !
Mon but est de rélaliser un script où l'utilisateur indiquent des "fichier" qu'il veut renommer en "fichier-old".
#!/bin/bash #Si il n’y aucun fichier indiqué ou si au moins un des fichiers indiqués n’existe pas, alors je (re)demande une saisie. if [ -z $1 ] || [ ! -e $* ] then read -p "Veuillez indiquer un ou des fichier(s) existant(s)." Fichier mv $fichier $fichier-old #Sinon je renomme le ou les fichier(s) indiqués en paramètres. else for fichier in $* do mv $fichier $fichier-old done fi
Le script fonctionne mais j'ai deux soucis:
- si j'indique un fichier qui n'existe pas, alors le script me demande bel et bien une saisie. Mais si j'indique plusieurs fichiers dont au moins un qui n'existe pas, le script plante et indique "ligne 5: opérateur binaire attendu"
- à la ligne 7, l'utilisateur ne peut indiquer qu'UN seul fichier. Comment faire pour qu'elle en prenne en compte plusieurs?
Merci pour votre aide !
A voir également:
- For shell
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Classic shell - Télécharger - Personnalisation
- Idm for mac - Télécharger - Téléchargement & Transfert
- Instagram for pc - Télécharger - Divers Communication
- Microsoft store download for pc - Guide
1 réponse
Hello,
Segmente ton code.
Contrôle la donnée (existe ? combien de fichiers ?), traite les données.
if [ ! -f tonfichier]
then
#tu redemande le fichier
fi
#ici soit le fichier est en paramétre soit l'utilisateur l'a taper. tu peux traiter ta donné.
/bin/mv $fichier $fichier_old
A plus tard sur l'tar
N'oubliez pas de marquez votre post comme résolut lorsque vous avez eu les réponses à vos questions...
Au royaume des aveugles, les borgnes sont rois.
Segmente ton code.
Contrôle la donnée (existe ? combien de fichiers ?), traite les données.
if [ ! -f tonfichier]
then
#tu redemande le fichier
fi
#ici soit le fichier est en paramétre soit l'utilisateur l'a taper. tu peux traiter ta donné.
/bin/mv $fichier $fichier_old
A plus tard sur l'tar
N'oubliez pas de marquez votre post comme résolut lorsque vous avez eu les réponses à vos questions...
Au royaume des aveugles, les borgnes sont rois.
J'ai suivi ton schéma du coup, et j'ai segmenté en deux parties:
Le script ne marche que si j'indique dès le début un fichier en paramètre.
Sinon si j'indique deux fichiers, il me demande tout de même de saisir le nom d'un fichier...
Fais une fonction ou change ton code pour que le mv n'y soit pas deux fois.
do
read -p "Veuillez indiquer un ou des fichier(s) existant(s)." fichier
done
------------------------------
Si le fichier $fichier n'existe pas.
Indiquer un fichier existant.
Fin
Je suis pas sure que ça soit ce que tu veuilles ^