Bonjoir.

Je rencontre de grandes difficultés à utiliser md5sum avec un paramètre variant.

Voici le code (inachevé) en entier, mais seule la ligne 45 pose problème :

md5sum -b `"$target"_"$numFiles"_"parts.*"`

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/bin/bash
 
   # Déclaration de la taille de découpage SIZE et du répertoire de sélection de fichier initial PATH_INITIAL,
   # ATTENTION il est impératif de ne pas utiliser d'espaces avant ou après le signe d'affectation '=', sinon le script ne s'éxécutera pas correctement,
   # car il y aura une erreur de syntaxe, c'est une caractéristique intrasèque du bash.
   # La casse n'est pas pris en compte et vous pouvez utilisez indifféremment les préfixes SI ou binaire, consultez http://fr.wikipedia.org/wiki/Octet
   # pour plus d'informations à ce sujet, veuillez noter que je me suis arrêté au giga, mais libre à vous d'éditer le code si vous avez besoin d'une
   # unité plus grande (wtf ?).
 
   # ATTENTION, SEULS LES NOMBRES ENTIERS SONT ACCEPTÉS et il faut au moins 1 espace entre l'entier et le préfixe
 
   SIZE='333 o'
 
   # Cette valeur change à chaque fois pour le dernier dossier qui a été sélectionné, il n'est donc pas vraiment utile de lui donner une valeur manuellement
   # Mais ce n'est pas encore implanté (zenity n'est pas suffisant pour cela et d'autres choses que je voudrais implanter)
 
   PATH_DEFAULT=""                                                
 
   # Script proprement dit, n'éditez pas le code en dessous de cette ligne sans savoir ce que vous faites
 
   # Note personnelle : bash ne supporte pas les fonctions vides, au moins mettre true si on prévoit d'écrire le contenu de la fonction plus tard,
   # même combat pour les if et probablement bien d'autres structures (toutes ?)
 
   Cut() {
 
      [ ! -e "$target" ] && exit # boite de dialogue fermée, pas de fichier sélectionné.
 
      local -i i=`stat -c %s "$target"`
 
      if (( i<$size )); then
         zenity --info --text="Le fichier n'a pas besoin d'être découpé"
         exit
      fi
 
      # on détermine combien de fichiers il va falloir créer.
 
      declare -i last_size=i%size
      declare -i numFiles=i/size
      (( last_size>0 )) && (( numFiles++ ))
 
      # on découpe le fichier
 
      split --bytes=$size -d "$target" "$target"_"$numFiles"_"parts."
 
      md5sum -b `"$target"_"$numFiles"_"parts.*"`
 
   }
 
   Paste() {
      true
   }
 
   SelectFile() {
   # creation boite de dialogue de sélection de fichier
 
      target=`zenity --file-selection --title="Sélectionner un fichier à $1"`
 
   }
 
   [ ! -e PATH_DEFAULT ] && PATH_DEFAULT=`pwd` # si dossier inexistant : affectation au dossier courant
 
   # on s'affranchit de la casse en mettant tout en minuscule
 
   SIZE=${SIZE,,}
 
   # extraction de la taille et du préfixe utilisé
 
   set $SIZE
 
   # transformation en octets selon le préfixe utilisé
 
   declare -i i
 
   case $2 in
 
      o) i=1 ;;
      ko) i=10**3 ;;
      mo) i=10**6 ;;
      go) i=10**9 ;;
 
      kio) i=2**10 ;;
      mio) i=2**20 ;;
      gio) i=2**30 ;;
 
      *) # prefixe invalide
 
   esac
 
   declare -i size=$1*i
   unset i
 
   # creation boite de dialogue de saisie
 
   operation=`zenity \
   --entry \
   --title="Choisir une opération" \
   --text="Ecrire C pour couper et P pour coller :"`
 
   operation=${operation,,} # on force le string en minuscule, pour ignorer la casse
 
   case $operation in
 
      c) SelectFile "couper" ; Cut ;;
      p) SelectFile "coller" ; Paste ;;
      *) # operation invalide
 
   esac
 
   sleep 5
Pourquoi l'emploi de `` ?

Parce que j'ai cru comprendre qu'en gros cela remplace les expressions par leur résultat, et comme j'ai la même erreur si j'utilise comme paramètre une constante (chemin écrit à la main) avec "", mais que c'est correct sans "", je me suis dit que c'était peut être la solution à mon problème.

Comme vous l'avez probablement deviner je suis novice en la matière, c'est mon premier essai en bash, soyez indulgents et j'accepte volontiers toute critique constructive.
A propos de zenity, c'est peut être pas forcément adapté ici mais je voulais simplement essayer cet outil.

Je précise que dans mon chemin absolu il n'y a pas d'espaces (j'ai renoncé pour l'instant à supporter les fichiers avec un nom d'espace dans leur nom, car je galère beaucoup trop à trouver les syntaxes adéquates)

Quelle serait donc la syntaxe appropriée ?

Sinon, y'a moyen de travailler sur un fichier que split a créé dès qu'il a été créé ? (et non après que tous ont été créés).
J'ai essayé avec un pipeline | , mais cela n'avait pas d'effet.

Merci d'avance.