Pages : 1
#1 Le 27/12/2020, à 12:14
- kbvz
fin de fichier prématuré
Bonjour à tous,
j'ai un petit soucis (voir plusieurs).
Je tente un script bash qui sauvegarderais un repertoire tapé par l'executeur du script.
du coup ce que je veux faire:
- Demander a l'executeur (humain) de taper le nom du répertoire à sauvegarder
- Tester si le répertoire existe
- si oui et bien je sauvegarde, si non je lui dit ca existe pas
-->je dois donc m'assurer que ce qui est rempli n'est pas vide, existe et commence par /.
j'ai tenté ca mais j'ai un soucis et je ne vois pas l'erreur :'(
merci de votre aide
#!/bin/bash
echo "Veuillez rentrer le chemin du repertoire à sauvegarder en commencant par /"
read rep
while [ -z "$rep" ] && while [ !"$rep" = ~^/ ] && [ ! -e "$rep" ]
do
echo "ne peut pas être vide et doit commencer par un / et doit exister, recommancez svp"
read rep
done
if [ -d "$rep" ]
then
sudo cp -r "$rep"/home/save/
else
echo "ok"
fi
Dernière modification par kbvz (Le 27/12/2020, à 12:14)
Hors ligne
#2 Le 27/12/2020, à 12:50
- Watael
Re : fin de fichier prématuré
sur quel OS ce script a-t-il été écrit ?
while [ -z "$rep" ] && while
non.
[ !"$rep" = ~^/ ]
non.
recommEncez svp.
Dernière modification par Watael (Le 27/12/2020, à 12:59)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 27/12/2020, à 12:52
- nany
Re : fin de fichier prématuré
Bonjour,
et je ne vois pas l'erreur :'(
Passe ton script à https://www.shellcheck.net/ et tu te rendras compte des erreurs.
P.S. : je pense qu’il manque aussi une espace dans la ligne cp…
Hors ligne
#4 Le 27/12/2020, à 13:19
- kbvz
Re : fin de fichier prématuré
Bonjour,
Je l'ai écris sous centos 7.
Je vais regarder le site cité pour voir les boulettes alors
Et peut être le bon patron pour l'orthographe
Merci
Hors ligne
#5 Le 27/12/2020, à 19:11
- kbvz
Re : fin de fichier prématuré
sur quel OS ce script a-t-il été écrit ?
while [ -z "$rep" ] && while
non.non.
recommEncez svp.
Merci de ton retour.
Comme indiqué précédemment c'est sous centos 7 que j'ai construit ces lignes.
par contre,
[ !"$rep" = ~^/ ]
, oui je crois bien que ca met le bazard mais j'ai tenté différentes possibilités sans succès ... Je n'arrive pas a voir ce qui cloche exactement. je souhaite vérifier que la valeur entrée dans el read commence par /. j'ai essayé de lui mettre un \ pour l'échapper sans succès non plus..
Par contre je n'ai aps compris pourquoi non sur l'autre ligne, si tu pouvais m'expliquer ce qui te gene, stp.
Merci
Hors ligne
#6 Le 27/12/2020, à 20:05
- Watael
Re : fin de fichier prématuré
#!/bin/bash
rgxChemin='^/'
until [[ -n $rep && $rep =~ $rgxChemin && -d $rep ]]
do
read -p "veuillez indiquer le nom d'un répertoire qui existe et dont le chemin commence par un / : " rep
done
sudo cp -r "$rep" /home/save/
Attention ! tenter de copier /home va poser un problème de récursion.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#7 Le 27/12/2020, à 20:55
- kamaris
Re : fin de fichier prématuré
je souhaite vérifier que la valeur entrée dans el read commence par /
Tu n'as pas besoin des expressions régulières pour ça :
[[ $rep == /* ]]
Hors ligne
#8 Le 27/12/2020, à 23:33
- Watael
Re : fin de fichier prématuré
ou
[[ ${rep::1} = / ]]
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#9 Le 28/12/2020, à 10:51
- kamaris
Re : fin de fichier prématuré
Oui, d'ailleurs je ne savais pas qu'on pouvait omettre l'offset (ou alors j'avais oublié, ce qui revient à peu près au même).
Hors ligne
#10 Le 28/12/2020, à 12:57
- kbvz
Re : fin de fichier prématuré
héhé je reviens car "ca marche pas". snif
@watael:
[[ ${rep::1} = / ]]
me renvoi direct en erreur de syntaxe
[[ $rep == /* ]]
ne renvoi pas de message d'erreur mais ne reconnait pas le / en debut de saisie coté user.
j'ai testé un chemin existant /home/toto contenant un répertoire tata.
et il me retourne le message du echo doit commencer par /
une idée ?
Thks
Hors ligne
#11 Le 28/12/2020, à 14:02
- Watael
Re : fin de fichier prématuré
une erreur de syntaxe
laquelle ?
comment as-tu intégré ces commandes à ton script ?
montre-le nous.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#12 Le 29/12/2020, à 08:49
- kbvz
Re : fin de fichier prématuré
une erreur de syntaxe
laquelle ?
comment as-tu intégré ces commandes à ton script ?
montre-le nous.
Bonjour,
Désolé de la réponse tardive:
#!/bin/bash
echo "Veuillez rentrer le chemin du repertoire à sauvegarder en commencant par /"
read rep
while [ -z "$rep" ]
do
echo "ne peut pas être vide et doit commencer par un /, recommencez svp"
read rep
done
while [[ ! "$rep" == ^/ ]]
do
echo "Doit commencer par un /, recommencez svp"
read rep
done
while [ ! -e "$rep" ]
do
echo "le repertoire ou le chemin n'existe pas"
read rep
done
if [ -d "$rep" ]
then
sudo cp -r "$rep" /home/save/
else
echo "repertoire sauvegardé"
fi
Hors ligne
#13 Le 29/12/2020, à 11:47
- Watael
Re : fin de fichier prématuré
[[ ! "$rep" == ^/ ]
== n'est pas un opérateur de regex.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne