Je viens de commencer à apprendre bash et je travaille sur mon premier petit projet. J'essaye d'utiliser un tableau comme argument pour attacher des fichiers en utilisant mail. Cependant, bien qu'un fichier existe dans mon répertoire, mail retourne : No such file or directory.
J'ai essayé de taper manuellement les commandes dans l'interpréteur de commandes en spécifiant le nom du fichier sans utiliser de tableaux et cela fonctionne sans aucune erreur.
Voici le code :
Dans mon répertoire, disons par exemple que j'ai Fichier1, Fichier2, Fichier3. Les noms de fichiers commenceront toujours par le nom "File", mais les numéros de chaque fichier seront différents.
D'abord je définis un tableau avec les numéros de dossier :
esend=(1 2 3)
Ensuite, je boucle sur chaque itération du tableau et je crée une copie de ce tableau en ajoutant à chaque itération -a [Nom du fichier].
# Loop over array and build the arguments for mailx.
for i in "${esend[@]}"
do
# for each iteration append onto array with -a [filename]
mailarray=( "${mailarray[@]}" "-a $(find -name "File$i" | sed "s|^\./||")" )
done
Les valeurs dans chaque index devraient être "-a File1 -a File2 -a File3" et maintenant mon plan est d'utiliser ceci comme arguments pour le mail
# "${mailarray[@]}" will contain the arguments ( -a File1 -a File2 -a File3 )
echo "File being sent from mail" | mailx "${mailarray[@]}" -s "Script.sh" -r "test@test.com" test@test.com
Le résultat réel est que le courrier retourne File1 : No such file or directory found.
Soit je fais quelque chose de mal ici, soit nous ne pouvons tout simplement pas utiliser cette approche ?