Voici le script simplement avec la ligne que j'ai indiqué corrigée :
#!/bin/bash
######################################################
# Script de copie aléatoire de musique sur baladeur #
# #
#Écrit par lylambda, et capkurt inspiré par stefP #
# Version 8 #
# http://forum.ubuntu-fr.org/viewtopic.php?id=200739 #
######################################################
# Définir le répertoire d'origine
# /!\ À modifier selon le baladeur
rep_dest="/media/KLUBBY"
# Définir le répertoire d'origine
# /!\ À modifier selon l'emplacement de la bibliothèque musicale
rep_orig="${HOME}/Musique/999_A_écouter"
# Décommenter la ligne suivante pour utiliser le mode debug en terminal
#dbg=yes
#############################
### ASSISTANT EN MODE GUI ###
#############################
Control_init() {
[ $dbg ] && echo "(A) : Vérification par l'utilisateur des dossiers à utiliser"
zenity --question --width=400 --height=200 --title="Copie Aléa de mp3" --text="Vérifier les informations ci-dessous: \n\n Repertoire de destination: \n$rep_dest \n\n Cette information est-elle correcte?"
if [ $? = 0 ]
then
[ $dbg ] && echo " Le répertoire de destination est correcte; aucun changement"
else
# Ouverture de la fenêtre pour choisir le répertoire de destination
rep_dest=$(zenity --file-selection --directory --title="Choix du répertoire de destination" --filename $rep_dest )
[ $dbg ] && echo " Les répertoires doivent être redéfini"
fi
zenity --question --width=400 --height=200 --title="Copie Aléa de mp3" --text="Vérifier les informations ci-dessous: \n\n Repertoire d'origine: \n$rep_orig \n \n Cette informations est-elle correcte?"
if [ $? = 0 ]
then
[ $dbg ] && echo " Le répertoire d'origine est correcte; aucun changement"
else
# Ouverture de la fenêtre pour choisir le répertoire d'origine
rep_orig=$(zenity --file-selection --directory --title="Choix du répertoire d'origine" --filename $rep_orig )
[ $dbg ] && echo " Les répertoires doivent être redéfini"
fi
}
Dell_rep_dist_GUI() {
if [ ! $(ls $rep_dest/|wc -l) = 0 ]
then
[ $dbg ] && echo "(B) : Le répertoire de destination n'est pas vide"
dell_rep_dist=$(zenity --question --width=400 --height=200 --title="Copie Aléa de mp3" --text="Voulez-vous supprimer le contenu du repertoire de destination :\n\n $rep_dest " )
if [ $? = 0 ]
then
# Vider le répertoire de destination
rm -r ${rep_dest}/*
[ $dbg ] && echo " Le contenu du répertoire de destination est supprimé"
else
[ $dbg ] && echo " Le contenu du répertoire de destination ne sera supprimé"
fi
fi
}
GetModel_GUI() {
model=$(zenity --list --radiolist --width=400 --height=200 --title="Copie Aléa de mp3" --text="Choisissez le type de copie :\n" --column="" --column="" \
FALSE "Utilisé un nombre d'occurence" \
FALSE "Utilisé la taille maximum du média" \
FALSE "Utilisé une taille de selection" )
# Quitter si aucune sélection
if [[ -z ${model} ]]; then
exit 1
elif [[ $model == "Utilisé un nombre d'occurence" ]] ; then
occurence=$(zenity --entry --width=400 --height=200 --title="Copie Aléa de mp3" --text="Entrez le nombre d'occurence :\n")
occurence=$((${occurence}-1))
elif [[ $model == "Utilisé une taille de selection" ]] ; then
taille_dispo=$(zenity --entry --width=400 --height=200 --title="Copie Aléa de mp3" --text="Entrez la taille de musique a copier :\nLa Taille est en Mio \n")
taille_dispo=$((${taille_dispo}*1000))
fi
}
CP_MP3 () {
if [[ -d ${rep_dest} && -d ${rep_orig} ]]; then
if [[ ! $model == "Utilisé une taille de selection" ]] ; then
# Définir la taille disponible sur le répertoire de destination
taille_dispo=`df ${rep_dest} | awk '{print $4}' | head -2 | tail -1`
[ $dbg ] && echo "(C) : Taille disponible : ${taille_dispo}"
fi
# Lancement de la fenêtre de chargement
zenity --progress --width=400 --height=200 --pulsate --auto-close &
zpid=$!
find -L ${rep_orig} -type f \( -iname "*.mp3" -o -iname "*.ogg" -o -iname "*.wma" \) | sort -R | sed -e "s#${rep_orig}/##g" > ${rep_orig}/list_music
# Si le répertoire d'origine contient de la musique
if test -s ${rep_orig}/list_music; then
[ $dbg ] && echo "(D) : Création de la liste des morceaux disponibles"
# Initialiser le compteur de morceaux à copier
nbr_copie=0
taille_dispo_init=${taille_dispo}
# Lancer la boucle définissant les morceaux à copier pour remplir le répertoire de destination
while true; do
# Sélectionner un morceau
fic_music=`head -n $((${nbr_copie}+1)) ${rep_orig}/list_music | tail -1`
# Définir la taille du morceau
taille_music=`du -s "${rep_orig}/${fic_music}"| awk '{print $1}'`
# Si la taille disponible est strictement inférieur à la taille du morceau :
if test "${taille_dispo}" -lt "${taille_music}"; then
# Créer dans le répertoire d'origine, un nouveau fichier texte listant que les morceaux sélectionnés
head -n ${nbr_copie} ${rep_orig}/list_music | sort > ${rep_orig}/select_music
[ $dbg ] && echo "(E) : Création de la liste des morceaux sélectionnés"
# Quitter la boucle
break
elif [ ! -e ${occurence} ] && [ $occurence -lt $nbr_copie ]
then
# Créer dans le répertoire d'origine, un nouveau fichier texte listant que les morceaux sélectionnés
head -n ${nbr_copie} ${rep_orig}/list_music | sort > ${rep_orig}/select_music
[ $dbg ] && echo "(E) : Création de la liste des morceaux sélectionnés"
# Quitter la boucle
break
fi
# Sinon actualiser de la taille disponible
taille_dispo=$((${taille_dispo}-${taille_music}))
# Incrémenter le compteur de morceaux de 1
nbr_copie=$((${nbr_copie}+1))
[ $dbg ] && echo "${nbr_copie} : Sélection de ${fic_music}" && echo " Taille prise = ${taille_music} - Taille disponible = ${taille_dispo} - Taille disponible initiale = ${taille_dispo_init}"
done
kill $zpid
cpt=`cat ${rep_orig}/select_music | wc -l`
i=0
IFS=$'\n'
for morceau in $(cat ${rep_orig}/select_music); do
i=$(($i+1))
echo $((${i}*100/${cpt}))
cd ${rep_orig} && cp "${morceau}" "${rep_dest}" && cd
done | zenity --progress --width=400 --height=200 --percentage=0 --auto-close
unset IFS
# Supprimer les fichiers texte temporaires
rm ${rep_orig}/list_music
rm ${rep_orig}/select_music
[ $dbg ] && echo "(F) : Suppression des fichiers temporaires"
fi
else
zenity --error --text="Une erreur est survenu. Les dossiers des destination et d'origine sont incorrect."
Control_init
Dell_rep_dist_GUI
GetModel_GUI
CP_MP3
fi
}
##############
### SCRIPT ###
##############
Control_init
Dell_rep_dist_GUI
GetModel_GUI
CP_MP3
[ $dbg ] && echo "Fin : vous pouvez quitter le terminal"
exit 0
Je sais que dans le code, avec des doubles guillemets pour indiquer le chemin du fichier, ça permet que le script accepte les guillemets ou les espaces. Je ne sais plus si c'est '' ou "", 2 fois ' ou 2 fois ".