case n'est pas bien utilisé..
si tu veux faire :
case "${choice}" in
"")
echo "Annulation. Redémarrez l'application et choisissez au moins une option."
read a
exit
;;
esac
==>
if [[ -z ${choice} ]]
then
echo "Annulation. Redémarrez l'application et choisissez au moins une option."
read a
exit
fi
l'interet de case est de regrouper les commandes
case "${choice}" in
*"home"* )
echo "#1 \"/home/\""
sudo cp -ravi /home/ ${support}/home/
echo "### HOME sauvegardé ! ###"
;;
esac
case "${choice}" in
*"Sources.list"* )
echo "#2 \"Sources.list\""
sudo cp -ravi /etc/apt/sources.list ${support}/sources.list
echo "# Liste des dépôts sauvegardée ! #"
;;
esac
==>
case "${choice}" in
*"home"* )
echo "#1 \"/home/\""
sudo cp -ravi /home/ ${support}/home/
echo "### HOME sauvegardé ! ###" ;;
*"Sources.list"* )
echo "#2 \"Sources.list\""
sudo cp -ravi /etc/apt/sources.list ${support}/sources.list
echo "# Liste des dépôts sauvegardée ! #" ;;
esac
Dans le cas ci-dessus, il ne traitera qu'une fois l'info, donc tu n'auras qu'un seul retour, de ce fait, tu entoure les case d'une boucle (comme while dans l'exemple suivant)
while read ligne
do
case "${choice}" in
*"home"* )
echo "#1 \"/home/\""
sudo cp -ravi /home/ ${support}/home/
echo "### HOME sauvegardé ! ###" ;;
*"Sources.list"* )
echo "#2 \"Sources.list\""
sudo cp -ravi /etc/apt/sources.list ${support}/sources.list
echo "# Liste des dépôts sauvegardée ! #" ;;
*"paquets"* )
echo "#3 Liste des paquets"
sudo dpkg --get-selections > ${support}/listepaquets.txt
# Pour restaurer : dpkg --set-selections < listepaquets.txt && sudo apt-get dselect-upgrade
echo "# Liste des paquets sauvegardée ! #" ;;
esac
done < <(tr '|' '\n' <<< "$choice")
Pourquoi mettre des read a un peu partout ?