Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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.

En ligne

#3 Le 27/12/2020, à 12:52

nany

Re : fin de fichier prématuré

Bonjour,



kbvz a écrit :

et je ne vois pas l'erreur :'(

Passe ton script à https://www.shellcheck.net/ et tu te rendras compte des erreurs. wink

P.S. : je pense qu’il manque aussi une espace dans la ligne cp

En 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 smile

Hors ligne

#5 Le 27/12/2020, à 19:11

kbvz

Re : fin de fichier prématuré

Watael a écrit :

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.

En ligne

#7 Le 27/12/2020, à 20:55

kamaris

Re : fin de fichier prématuré

kbvz a écrit :

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} = / ]]

smile


Connected \o/
Welcome to sHell. · eval is evil.

En 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.

En ligne

#12 Le 29/12/2020, à 08:49

kbvz

Re : fin de fichier prématuré

Watael a écrit :

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.

En ligne