#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.
Hors 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! )
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