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 09/11/2019, à 14:45

philoeil

[RESOLU] Script shell espace irresolu

Bonjour,

Dans le script suivant j'ai un problème avec la partie (espace+') qui ne donne pas le résultat attendu, quelqu'un peut-il m'indiquer le problème ?

dans un script

#!/bin/bash
echo " lancement sauvegarde"
FfsB="$1.ffs_batch'"
echo $FfsB
#/opt/FreeFileSync/FreeFileSync '/home/phil/Batch_FFiles/EssaiSD5.ffs_batch'
opt/FreeFileSync/FreeFileSync \'/home/phil/Batch_FFiles/$FfsB

Le resultat obtenu ne lance pas l'application

phil@phil-G750JH:~/Documents/JeCodeShell/EssaiDoublMD5Sum$ ./MsgForum.sh EssaiSD5
 lancement sauvegarde
EssaiSD5.ffs_batch'
./MsgForum.sh: ligne 6: opt/FreeFileSync/FreeFileSync: Aucun fichier ou dossier de ce type
phil@phil-G750JH:~/Documents/JeCodeShell/EssaiDoublMD5Sum$ 

La ligne dans le script "en commentaire", placée en ligne de commande, elle lance bien l'application FreeFileSync avec execution du batch EssaiSD5.ffs.batch

phil@phil-G750JH:~/Documents/JeCodeShell/EssaiDoublMD5Sum$ /opt/FreeFileSync/FreeFileSync '/home/phil/Batch_FFiles/EssaiSD5.ffs_batch'
phil@phil-G750JH:~/Documents/JeCodeShell/EssaiDoublMD5Sum$ 

Merci de vos lumières

Dernière modification par philoeil (Le 09/11/2019, à 17:58)

Hors ligne

#2 Le 09/11/2019, à 14:53

Watael

Re : [RESOLU] Script shell espace irresolu

dans le script, la différence entre la ligne commentée et la suivante n'est pas évidente ?


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

En ligne

#3 Le 09/11/2019, à 15:14

credenhill

Re : [RESOLU] Script shell espace irresolu

hello
le ' dans la variable FfsB n'est pas traité par le shell comme terminant la chaine \'/home/phil/Batch_FFiles/$FfsB

Hors ligne

#4 Le 09/11/2019, à 15:18

grigouille

Re : [RESOLU] Script shell espace irresolu

Effectivement, il y a une différence entre ces deux lignes.


Debian (xfce) 12
HP LaserJet M1132 MFP

Hors ligne

#5 Le 09/11/2019, à 16:11

jamesbad000

Re : [RESOLU] Script shell espace irresolu

Bonjour.

l'erreur qui apparait

./MsgForum.sh: ligne 6: opt/FreeFileSync/FreeFileSync: Aucun fichier ou dossier de ce type

vient de l'absence de slash devant opt puisque tu lance ton script  depuis "~/Documents/JeCodeShell/EssaiDoublMD5Sum" il cherche
"~/Documents/JeCodeShell/EssaiDoublMD5Sum/opt/FreeFileSync/FreeFileSync"

l'erreur que tu auras une fois celle ci-dessus corrigée est qu'il ne trouvera pas le fichier

'/home/phil/Batch_FFiles/$FfsB

car l'antislash qui précède l'apostrophe indique au shell de considérer l'apostrophe comme un caractère normal (donc faisant parti du nom du fichier).
Si tu enlève l'antislash tu aura une erreur d'apostrophe non appairé. Et si tu ajoute un autre apostrophe au bout, ta variable $FfsB ne sera pas expansée, car l'apostrophe est un délimiteur "fort".
Donc il fait encadrer avec des guillemets (délimiteur faible) qui permettent l'expansion des paramètres, et permettra à ton script de fonctionner même si le nom passé en paramètre contient des espaces...

/opt/FreeFileSync/FreeFileSync "/home/phil/Batch_FFiles/$FfsB"

L'espace et le temps sont les modes par lesquels nous pensons, et non les conditions dans lesquelles nous vivons. (Signé Albert)

Hors ligne

#6 Le 09/11/2019, à 17:57

philoeil

Re : [RESOLU] Script shell espace irresolu

Bonjour,
Et merci à Watael, credenhill, grigouille,
et merci beaucoup à jamesbad000 pour la solution et l'explication (j'apprécie l'effort pédagogique, vraiment super! smile)

Effectivement le code modifié ainsi marche

#!/bin/bash
echo " lancement sauvegarde"
FfsB="/home/phil/Batch_FFiles/$1.ffs_batch"
echo $FfsB
#/opt/FreeFileSync/FreeFileSync '/home/phil/Batch_FFiles/EssaiSD5.ffs_batch'
/opt/FreeFileSync/FreeFileSync $FfsB

Je passe en Resolu

Hors ligne

#7 Le 09/11/2019, à 18:25

jamesbad000

Re : [RESOLU] Script shell espace irresolu

attention dans la ligne

/opt/FreeFileSync/FreeFileSync $FfsB

ta variable $FfsB doit être aussi entre guillemet. Autrement, s'il y a un blanc dans le nom de fichier, cela sera traité comme 2 paramètres.
(le shell effectue d'abord l'expansion puis interprète la ligne résultante dans un 2ème temps)


L'espace et le temps sont les modes par lesquels nous pensons, et non les conditions dans lesquelles nous vivons. (Signé Albert)

Hors ligne

#8 Le 10/11/2019, à 15:21

philoeil

Re : [RESOLU] Script shell espace irresolu

Merci Jamesbad000 je corrige.

Hors ligne