Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 30/10/2016, à 20:10

MineElectricity

Mon scrit bash est-il clair ?

Bonjour,
Pour m'initier au bash je me suis donné comme "défis" de créer un fichier post-install d'ubuntu 16.04.
Après toutes mes péripéties et oublis d’espaces (merci à https://doc.ubuntu-fr.org/tutoriel/script_shell ) je me demande donc si il est clair

Ce serait donc un honneur qu'un cousin "barbus" puisse me donner son avis ! :3

#!/bin/bash 
#2016/10/30 on ubuntu 16.04
#je travaille pour faire un deuxième script entièrement automatisé

#ce script demande en premier quelles actions appliquer puis les appliques, pour comprendre les liens la demande est au même nombre de tabulation que l'action plus basse.
#ce script à pour but de compléter l'installation d'ubuntu 16.04


#demande à l'user si il veut continuer et explique y et n
echo "Script lancé, pour vérifier si des erreurs ont lieux lire le terminal
"

echo "Répondre Y ou N aux actions à appliquer, si vous répondez autre chose(sauf si l'on demande d'écrire des paquets), faites ctrl+c et relancez le script
"

echo -n "vlc, zram et le francais seront installés mais les suggestions d'achat d'ubuntu supprimées continuer ?"
read reponse
if [ "$reponse" = "y" ] || [ "$reponse" = "Y" ]; then
    echo "Le script continue."
    echo -n "Mettre à jour le système + noyau ?"
    read maj
    
        echo -n "Installer java libre et son greffon firefox ?"
        read java
        
            echo -n "Installer la prise en charge dvd ?"
            read dvd
            
                echo -n "Activer le clavier numérique au démarrage ?"
                read numpad
                
                    echo -n "Désactiver le bluetooth au démarrage ?"
                    read bluetooth
                    
                        echo 'Voici des programmes, merci d'"'"'écrire éxactement ceux que vous voulez de cette manière;"firefox thunderbird [...]"'
                        echo -n "À moins que vous vouliez automatiser cette étape ? (utilisateur moyen)"
                        read auto2
                        echo "Votre réponse est enregistrée si vous avez dit Y n'écrivez rien au prochain ':'
                    " 
                        echo "Voici quelques exemples de programmes utiles:filezilla skype openssh-server sshfs inkscape gimp gthumb shotwell sweethome3d cheese vokoscreen kazam pavucontrol gnome-alsamixer paman pavumeter padevchooser paprefs ubuntu-restricted-extras ffmpeg gstreamer0.10-plugins-ugly gxine libdvdread4 totem-mozilla icedax tagtool easytag id3tool lame nautilus-script-audio-convert libavcodec-extra keepassx shutter xournal gufw ppa-purge synaptic gksu gdebi numlockx geany smartmontools geany-plugins gedit-plugins gconf-editor unity-tweak-tool clamav clamtk bleachbit sysinfo hardinfo docky cairo-dock brasero grsync gnome-shell gnome-shell-extensions kde lxde xfce mate cinnamon
"
                        echo "Je recommande d'intaller:skype gimp cheese unity-tweak-tool audacity blender gnome-session-flashback gnome-shell mixxx openshot pavucontrol vokoscreen
                    "
                        echo -n "Écrivez les programmes:"
                        read paquets
                        
                            echo -n "Installer prelink ?"
                            read prelink
                        
                        
                                echo -n 'Éffectuer "update upgrade autoremove autoclean" à la fin du script ?'
                                read majend
                        
                        
    #maj + noyau + clean        
    if [ "$maj" = "y" ] || [ "$maj" = "Y" ]; then
    apt-get update && apt-get upgrade -y && apt-get full-upgrade -y && apt-get -y clean && apt-get autoremove -y && apt-get autoclean -y
    echo "maj ok"
    fi  
    
        #installtion de java          
        if [ "$java" = "y" ] || [ "$java" = "Y" ]; then
        apt-get install -y default-jre icedtea-plugin
        echo "java libre ok"
        fi
        
            #prise en charge dvd
            if [ "$dvd" = "y" ] || [ "$dvd" = "Y" ]; then
            apt-get install -y libdvd-pkg && dpkg-reconfigure libdvd-pkg
            echo "dvd ok"
            fi
            
                #numpad on au boot
                if [ "$numpad" = "y" ] || [ "$numpad" = "Y" ]; then
                sed -i 's|^exit 0.*$|# Numlock enable\n[ -x /usr/bin/numlockx ] \&\& numlockx on\n\nexit 0|' /etc/rc.local
                echo "clavier numérique au démrrage ok"
                fi
                
                    #install des paquets recommandés
                    if [ "$auto2" = "y" ] || [ "$auto2" = "Y" ]; then
                    apt-get install -y audacity blender gimp gnome-session-flashback gnome-shell mixxx openshot pavucontrol vokoscreen skype cheese unity-tweak-tool
                    echo "programmes auto installés"
                    fi
                    
                    #install des paquets choisis
                    apt-get install -y "$paquets"
                    echo "programmes ""$paquets""installés"
                    
                        #install de prelink
                        if [ "$prelink" = "y" ] || [ "$prelink" = "Y" ]; then
                        apt-get -y install prelink && sed -i 's/PRELINKING=unknown/PRELINKING=yes/' /etc/default/prelink && /etc/cron.daily/prelink &&
                        echo 'DPkg::Post-Invoke {"echo Pré-raccordement des bibliothèques en cours, veuillez patienter...;/etc/cron.daily/prelink";}'| tee -a /etc/apt/apt.conf.d/98prelink
                        echo "prelink installé"
                        fi
                             
                            #Désactivation du bluetooth au boot    
                            if [ "$bluetooth" = "y" ] || [ "$bluetooth" = "Y" ]; then
                            sed -i 's|^exit 0.*$|# Bluetooth disabled\nrfkill block bluetooth\n\nexit 0|' /etc/rc.local
                            echo 'Bluetooth auto off'
                            fi   
                    
    #installation des paquets demandés en premier + francais et suppression des propositions d'achats    
    apt-get install -y zram-config language-pack-fr language-pack-fr-base language-pack-gnome-fr language-pack-gnome-fr-base vlc
    command gsettings set com.canonical.Unity.Lenses disabled-scopes "['more_suggestions-amazon.scope', 'more_suggestions-u1ms.scope', 'more_suggestions-populartracks.scope', 'music-musicstore.scope', 'more_suggestions-ebay.scope', 'more_suggestions-ubuntushop.scope', 'more_suggestions-skimlinks.scope']"
    command gsettings set 'com.canonical.Unity.ApplicationsLens' 'display-available-apps' 'false'
    echo "zram + francais + suggestion d'achat ok"
    
                                if [ "$majend" = "y" ] || [ "$majend" = "Y" ]; then
                                apt-get update && apt-get upgrade -y && apt-get autoremove -y && apt-get autoclean -y
                                fi
        
        
#si la personne à dit n/N à la toute première question    
elif [ "$reponse" = "n" ] || [ "$reponse" = "N" ]; then
    echo "byeeeee"
#si la personne à mal répondu à la première question    
else
    echo "Il faut taper Y ou y ou N ou n ! Pas $reponse"
fi


echo "script terminé, pour vérifier si des erreurs ont eu lieux lire le terminal"
exit 0;

Hors ligne

#2 Le 30/10/2016, à 20:25

MineElectricity

Re : Mon scrit bash est-il clair ?

je viens de me rendre compte que certainnes actions n'étaient pas dans le même ordre que les question les voicis donc rétablies

#!/bin/bash 
#2016/10/30 on ubuntu 16.04
#je travaille pour faire un deuxième script entièrement automatisé

#ce script demande en premier quelles actions appliquer puis les appliques, pour comprendre les liens la demande est au même nombre de tabulation que l'action plus basse.
#ce script à pour but de compléter l'installation d'ubuntu 16.04


#demande à l'user si il veut continuer et explique y et n
echo "Script lancé, pour vérifier si des erreurs ont lieux lire le terminal
"

echo "Répondre Y ou N aux actions à appliquer, si vous répondez autre chose(sauf si l'on demande d'écrire des paquets), faites ctrl+c et relancez le script
"
    echo -n "vlc, zram et le francais seront installés mais les suggestions d'achat d'ubuntu supprimées continuer ?"
    read reponse
    if [ "$reponse" = "y" ] || [ "$reponse" = "Y" ]; then
    echo "Le script continue."
    
        echo -n "Mettre à jour le système + noyau ?"
        read maj
        
            echo -n "Installer java libre et son greffon firefox ?"
            read java
            
                echo -n "Installer la prise en charge dvd ?"
                read dvd
                
                    echo -n "Activer le clavier numérique au démarrage ?"
                    read numpad
                    
                        echo -n "Désactiver le bluetooth au démarrage ?"
                        read bluetooth
                        
                            echo 'Voici des programmes, merci d'"'"'écrire éxactement ceux que vous voulez de cette manière;"firefox thunderbird [...]"'
                            echo -n "À moins que vous vouliez automatiser cette étape ? (utilisateur moyen)"
                            read auto2
                            echo "Votre réponse est enregistrée si vous avez dit Y n'écrivez rien au prochain ':'
                            " 
                            echo "Voici quelques exemples de programmes utiles:filezilla skype openssh-server sshfs inkscape gimp gthumb shotwell sweethome3d cheese vokoscreen kazam pavucontrol gnome-alsamixer paman pavumeter padevchooser paprefs ubuntu-restricted-extras ffmpeg gstreamer0.10-plugins-ugly gxine libdvdread4 totem-mozilla icedax tagtool easytag id3tool lame nautilus-script-audio-convert libavcodec-extra keepassx shutter xournal gufw ppa-purge synaptic gksu gdebi numlockx geany smartmontools geany-plugins gedit-plugins gconf-editor unity-tweak-tool clamav clamtk bleachbit sysinfo hardinfo docky cairo-dock brasero grsync gnome-shell gnome-shell-extensions kde lxde xfce mate cinnamon
"
                            echo "Je recommande d'intaller:skype gimp cheese unity-tweak-tool audacity blender gnome-session-flashback gnome-shell mixxx openshot pavucontrol vokoscreen
                        "
                            echo -n "Écrivez les programmes:"
                            read paquets
                        
                                echo -n "Installer prelink ?"
                                read prelink
                        
                                    echo -n 'Éffectuer "update upgrade autoremove autoclean" à la fin du script ?'
                                    read majend
                        
                        
        #maj + noyau + clean        
        if [ "$maj" = "y" ] || [ "$maj" = "Y" ]; then
        apt-get update && apt-get upgrade -y && apt-get full-upgrade -y && apt-get -y clean && apt-get autoremove -y && apt-get autoclean -y
        echo "maj ok"
        fi  
        
            #installtion de java          
            if [ "$java" = "y" ] || [ "$java" = "Y" ]; then
            apt-get install -y default-jre icedtea-plugin
            echo "java libre ok"
            fi
            
                #prise en charge dvd
                if [ "$dvd" = "y" ] || [ "$dvd" = "Y" ]; then
                apt-get install -y libdvd-pkg && dpkg-reconfigure libdvd-pkg
                echo "dvd ok"
                fi
                
                    #numpad on au boot
                    if [ "$numpad" = "y" ] || [ "$numpad" = "Y" ]; then
                    sed -i 's|^exit 0.*$|# Numlock enable\n[ -x /usr/bin/numlockx ] \&\& numlockx on\n\nexit 0|' /etc/rc.local
                    echo "clavier numérique au démrrage ok"
                    fi
                    
                        #Désactivation du bluetooth au boot    
                        if [ "$bluetooth" = "y" ] || [ "$bluetooth" = "Y" ]; then
                        sed -i 's|^exit 0.*$|# Bluetooth disabled\nrfkill block bluetooth\n\nexit 0|' /etc/rc.local
                        echo 'Bluetooth auto off'
                        fi
                                             
                            #install des paquets recommandés
                            if [ "$auto2" = "y" ] || [ "$auto2" = "Y" ]; then
                            apt-get install -y audacity blender gimp gnome-session-flashback gnome-shell mixxx openshot pavucontrol vokoscreen skype cheese unity-tweak-tool
                            echo "programmes auto installés"
                            fi
                    
                            #install des paquets choisis
                            apt-get install -y "$paquets"
                            echo "programmes ""$paquets""installés"
                        
                                #install de prelink
                                if [ "$prelink" = "y" ] || [ "$prelink" = "Y" ]; then
                                apt-get -y install prelink && sed -i 's/PRELINKING=unknown/PRELINKING=yes/' /etc/default/prelink && /etc/cron.daily/prelink &&
                                echo 'DPkg::Post-Invoke {"echo Pré-raccordement des bibliothèques en cours, veuillez patienter...;/etc/cron.daily/prelink";}'| tee -a /etc/apt/apt.conf.d/98prelink
                                echo "prelink installé"
                                fi
                             
  
                    
    #installation des paquets demandés en premier + francais et suppression des propositions d'achats    
    apt-get install -y zram-config language-pack-fr language-pack-fr-base language-pack-gnome-fr language-pack-gnome-fr-base vlc
    command gsettings set com.canonical.Unity.Lenses disabled-scopes "['more_suggestions-amazon.scope', 'more_suggestions-u1ms.scope', 'more_suggestions-populartracks.scope', 'music-musicstore.scope', 'more_suggestions-ebay.scope', 'more_suggestions-ubuntushop.scope', 'more_suggestions-skimlinks.scope']"
    command gsettings set 'com.canonical.Unity.ApplicationsLens' 'display-available-apps' 'false'
    echo "zram + francais + suggestion d'achat ok"
                                    
                                    #maj et clean du système avant de quitter
                                    if [ "$majend" = "y" ] || [ "$majend" = "Y" ]; then
                                    apt-get update && apt-get upgrade -y && apt-get autoremove -y && apt-get autoclean -y
                                    fi
        
        
#si la personne à dit n/N à la toute première question    
elif [ "$reponse" = "n" ] || [ "$reponse" = "N" ]; then
    echo "script annulé"
#si la personne à mal répondu à la première question    
else
    echo "Il faut taper Y ou y ou N ou n ! Pas $reponse"
fi


echo "script terminé, pour vérifier si des erreurs ont eu lieux lire le terminal"
exit 0;

Hors ligne

#3 Le 31/10/2016, à 09:48

Hizoka

Re : Mon scrit bash est-il clair ?

Salut voici un petit retour perso

    if [ "$reponse" = "y" ] || [ "$reponse" = "Y" ]; then
=>
    if [[ "${REPLY,,}" == "y" ]]; then

en utilisant les doubles virgules, ça me la variable en minuscule.

        echo -n "Mettre à jour le système + noyau ?"
        read maj

            echo -n "Installer java libre et son greffon firefox ?"
            read java

pas logique d'ajouter des tabulations, c'est au même niveau tous ces echo et read.

echo 'Voici des programmes, merci d'"'"'écrire éxactement ceux que vous voulez de cette manière;"firefox thunderbird [...]"'
=>
echo "Voici des programmes, merci d'écrire éxactement ceux que vous voulez de cette manière;\"firefox thunderbird [...]\""

Je trouve ça plus lisible tongue

echo "Votre réponse est enregistrée si vous avez dit Y n'écrivez rien au prochain ':'

=> pourquoi ne pas utiliser un if qui teste directement cette possibilité pour eviter d'afficher le texte ?


echo "Votre réponse est enregistrée si vous avez dit Y n'écrivez rien au prochain ':'
                            "
=>
echo -e "Votre réponse est enregistrée si vous avez dit Y n'écrivez rien au prochain ':'\n" 

je trouve ca plus lisible mais bon


        if [ "$maj" = "y" ] || [ "$maj" = "Y" ]; then
        apt-get update && apt-get upgrade -y && apt-get full-upgrade -y && apt-get -y clean && apt-get autoremove -y && apt-get autoclean -y
        echo "maj ok"
        fi  
        
            #installtion de java          
            if [ "$java" = "y" ] || [ "$java" = "Y" ]; then
            apt-get install -y default-jre icedtea-plugin
            echo "java libre ok"
            fi

pas logique d'ajouter des tabulations, c'est au même niveau tous ces if.
Mais leur contenu peut etre indenter lui.
et tu peux reutiliser les ${VARIABLES,,} pour eviter les doubles verifications.

et pour

if [ "$reponse" = "y" ] || [ "$reponse" = "Y" ]; then
...
#si la personne à dit n/N à la toute première question    
elif [ "$reponse" = "n" ] || [ "$reponse" = "N" ]; then
    echo "script annulé"
#si la personne à mal répondu à la première question    
else
    echo "Il faut taper Y ou y ou N ou n ! Pas $reponse"
fi
=>
case "${reponse}" in
    y*|o*) suite du script ;;
    n*) echo "script annulé" ;;
    *) echo "Il faut taper Y ou y ou N ou n ! Pas $reponse" ;;
esac

plus lisible mais surtout test si on a repondu yes ou oui aussi bien que y ou o.


Perso je suis pas fan de toutes ces questions...

je te joins un script perso :

function multiselect
{
# valeur de retour numérique : ${multinum[@]}
# valeur de retour de texte : ${multitxt[@]}
# ${@} : les arguments servant de liste
# PS3 : message à afficher avant le listing
# @@ : élément séparateur, partie de gauche valeur texte et à gauche description ( valeur@@description )
# argument : -[0-9] : limite le nombre de reponse possible

# ATTENTION : La liste commence au chiffre 1 mais les tableaux retournés commencent, eux, à 0 (comme tout tableau)

# Remise au propre des variables
unset multinum multitxt limite num x

# Recherche l'option du nombre de reponse
[[ "${1}" == -[0-9]* ]] && limite="${1/#-}"

# Message informatif apparaissant avant la liste
if [[ ${PS3} && ${limite} ]]
then
    if [[ ${limite} = 1 ]]
    then
        echo -e "${FUSHIA}${PS3}${RAZ} ( ${BLEUFONCE}1 seul choix possible.${RAZ} )\n"
    else
        echo -e "${FUSHIA}${PS3}${RAZ} ( ${BLEUFONCE}${limite} choix possibles.${RAZ} )\n"
    fi

elif [[ ${PS3} && -z ${limite} ]]
then
     echo -e "${FUSHIA}${PS3}${RAZ}\n"

else
    echo
fi

# Affichage de la liste des choix
for x in "${@}"
do
    # En cas de limite, on saute la 1ere valeure qui est le chiffre donné
    if [[ ${limite} && -z ${num} ]]
    then
        num=0

    else
        # Incrémentation du numéro pour la prochaine ligne
        ((num++))

        # recherche le signe servant de séparateur entre la valeur et la description
        if [[ "${x}" =~ "@@" ]]
        then
            # Si séparateur présent : affichage du numéro, de la valeur du texte et de la description
            echo -e "${FUSHIA}${num}${RAZ}) ${BLEUFONCE}${x%%@@*}${RAZ} : ${VERT}${x##*@@}${RAZ}"

        else
            # Si pas de séparateur : affichage du numéro et de la valeur du texte
            echo -e "${FUSHIA}${num}${RAZ}) ${BLEUFONCE}${x}${RAZ}"
        fi
    fi
done

# Envoie de la réponse dans un tableau
read -p $'\nSélection : ' -a multinum

# Création d'une liste contenant les valeurs textes choisies + Vérification des valeurs numériques
for x in "${multinum[@]}"
do
    if [[ ${x} -gt ${#@} || ! ${x} =~ ^[0-9]*$ ]]
    then
        # Message d'erreur indiquant une réponse impossible
        echo -e "\n${ROUGE}Erreur dans la sélection, vous devez rentrez des chiffres inférieurs à la valeur maximale proposée.${RAZ}"

        # Destruction des variables
        unset multinum multitxt limite

        # Arrêt de la fonction en erreur (code 1)
        return 1

    elif [[ ${limite} && ${#multinum[@]} -gt ${limite} ]]
    then
        # Message d'erreur indiquant un nombre de reponse trop élevé
        echo -e "\n${ROUGE}Nombre de séléction trop importante, la limite est de ${limite} choix.${RAZ}"

        # Destruction des variables
        unset multinum multitxt limite

        # Arrêt de la fonction en erreur (code 1)
        return 1

    else
        # Si il y a eu un argument pour militer le nombre de reponse, on ajoute 1 a x
        [[ "${1}" == -[0-9]* ]] && ((x++))

        # Ajout de la valeur traitée dans le tableau
        multitxt+=("${!x%%@@*}")
    fi
done
}

PS3="Liste de question" multiselect "Update@@@Mettre à jour le système + noyau" "Firefox@@@Installer java libre et son greffon firefox" "Installer la prise en charge dvd" "Activer le clavier numérique au démarrage" "Exit"

# Faire sa selection en indiquant les numeros avec des espaces entre eux
echo "${multitxt[@]}"
echo "${multinum[@]}"

Ca met un peu de couleur et ca permet de faire des selections de groupes pour repondre oui au non.


Voila mon avis et ma facon de faire, amuse toi bien pour la suite smile

Dernière modification par Hizoka (Le 31/10/2016, à 09:49)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#4 Le 31/10/2016, à 14:07

MineElectricity

Re : Mon scrit bash est-il clair ?

Merci de ta réponse;

Je vais essayer d'appliquer ce que tu me dit mais étant débutant des phrases comme "[[ "${1}" == -[0-9]* ]] && limite="${1/#-}"" font un peut bizarre.
Pour les tabulations justement je savait pas trop ou les mettre et le problème est que si je les enlèves cela devient un peut chaud à lire hmm

Je vais tester ton script voir ce que ça donne et essayer de comprendre toutes ça partie par partie mais le man https://doc.ubuntu-fr.org/tutoriel/script_shell est-il vraiment complet ?

Merci :3


edit: je suis pas doué en débug, ne comprennant pas encore je sait pas ce que je dois faire après :
sauvegarde/modèle de tableau.sh: 1: /sauvegarde/modèle de tableau.sh: function: not found
sauvegarde/modèle de tableau.sh: 94: /sauvegarde/modèle de tableau.sh: Syntax error: word unexpected (expecting ")")

Dernière modification par MineElectricity (Le 31/10/2016, à 14:14)

Hors ligne

#5 Le 31/10/2016, à 18:18

Hizoka

Re : Mon scrit bash est-il clair ?

Pour apprendre : http://abs.traduc.org/abs-fr

Les tabulations ne sont pas obligatoires dans un script bash mais aident grandement à lire.
On ajoute une tabulation lorsque l'on rajoute un niveau, ex :

var1="oui"
var2="non"

echo "blabla"
echo "blibli"

if [[ ${var1} == "oui" ]]
then
    if [[ ${var2} == "non" ]]
    then
        echo "oui puis non"

    else
        echo "oui puis oui"
    fi

else
    if [[ ${var2} == "non" ]]
    then
        echo "non puis non"

    else
        echo "non puis oui"
    fi
fi

je t'ai donné une fonction qui te permet de te faire un multichoix tout beau, tout propre.

Tu colles la fonction

function multiselect
{
...
}

dans ton code et tu l’appelles via la commande multiselect.

Mon code est assez détaillé, donc n’hésite pas à lire et à tester.

[[ "${1}" == -[0-9]* ]] && limite="${1/#-}"

peut également s’écrire plus longuement :

if [[ "${1}" == -[0-9]* ]]
then
    limite="${1/#-}"
fi

${1} est le 1er argument donné à la fonction

ex :

multiselect -2 "test1" "test2" "test3"

le 1er argument donné est -2.

La commande regarde si le 1er argument est composé d'un - suivi d'un chiffre entre 1 et 9.
Si c'est le cas il récupère la valeur indiqué pour limiter le nombre de réponse possible (dans l'exemple ci dessus, on limite à 2 choix max).

petit exemple visuel : https://asciinema.org/a/cn7ndgyg3111gyqv03oukolt9

Pour bien tester colle ça dans un fichier vierge :

#!/bin/bash

function multiselect
{
# valeur de retour numérique : ${multinum[@]}
# valeur de retour de texte : ${multitxt[@]}
# ${@} : les arguments servant de liste
# PS3 : message à afficher avant le listing
# @@ : élément séparateur, partie de gauche valeur texte et à gauche description ( valeur@@description )
# argument : -[0-9] : limite le nombre de reponse possible

# ATTENTION : La liste commence au chiffre 1 mais les tableaux retournés commencent, eux, à 0 (comme tout tableau)

# Remise au propre des variables
unset multinum multitxt limite num x

# Recherche l'option du nombre de reponse
[[ "${1}" == -[0-9]* ]] && limite="${1/#-}"

# Message informatif apparaissant avant la liste
if [[ ${PS3} && ${limite} ]]
then
    if [[ ${limite} = 1 ]]
    then
        echo -e "${FUSHIA}${PS3}${RAZ} ( ${BLEUFONCE}1 seul choix possible.${RAZ} )\n"
    else
        echo -e "${FUSHIA}${PS3}${RAZ} ( ${BLEUFONCE}${limite} choix possibles.${RAZ} )\n"
    fi

elif [[ ${PS3} && -z ${limite} ]]
then
     echo -e "${FUSHIA}${PS3}${RAZ}\n"

else
    echo
fi

# Affichage de la liste des choix
for x in "${@}"
do
    # En cas de limite, on saute la 1ere valeure qui est le chiffre donné
    if [[ ${limite} && -z ${num} ]]
    then
        num=0

    else
        # Incrémentation du numéro pour la prochaine ligne
        ((num++))

        # recherche le signe servant de séparateur entre la valeur et la description
        if [[ "${x}" =~ "@@" ]]
        then
            # Si séparateur présent : affichage du numéro, de la valeur du texte et de la description
            echo -e "${FUSHIA}${num}${RAZ}) ${BLEUFONCE}${x%%@@*}${RAZ} : ${VERT}${x##*@@}${RAZ}"

        else
            # Si pas de séparateur : affichage du numéro et de la valeur du texte
            echo -e "${FUSHIA}${num}${RAZ}) ${BLEUFONCE}${x}${RAZ}"
        fi
    fi
done

# Envoie de la réponse dans un tableau
read -p $'\nSélection : ' -a multinum

# Création d'une liste contenant les valeurs textes choisies + Vérification des valeurs numériques
for x in "${multinum[@]}"
do
    if [[ ${x} -gt ${#@} || ! ${x} =~ ^[0-9]*$ ]]
    then
        # Message d'erreur indiquant une réponse impossible
        echo -e "\n${ROUGE}Erreur dans la sélection, vous devez rentrez des chiffres inférieurs à la valeur maximale proposée.${RAZ}"

        # Destruction des variables
        unset multinum multitxt limite

        # Arrêt de la fonction en erreur (code 1)
        return 1

    elif [[ ${limite} && ${#multinum[@]} -gt ${limite} ]]
    then
        # Message d'erreur indiquant un nombre de reponse trop élevé
        echo -e "\n${ROUGE}Nombre de séléction trop importante, la limite est de ${limite} choix.${RAZ}"

        # Destruction des variables
        unset multinum multitxt limite

        # Arrêt de la fonction en erreur (code 1)
        return 1

    else
        # Si il y a eu un argument pour militer le nombre de reponse, on ajoute 1 a x
        [[ "${1}" == -[0-9]* ]] && ((x++))

        # Ajout de la valeur traitée dans le tableau
        multitxt+=("${!x%%@@*}")
    fi
done
}

PS3="Liste de question" multiselect "Update@@Mettre à jour le système + noyau" "Firefox@@Installer java libre et son greffon firefox" "Installer la prise en charge dvd" "Activer le clavier numérique au démarrage" "Exit"

# Faire sa selection en indiquant les numeros avec des espaces entre eux
echo "Réponses données en version texte :"
for rep in "${multitxt[@]}"
do
    echo "${rep}"
done

echo "Réponses données en version nombre :"
for rep in "${multinum[@]}"
do
    echo "${rep}"
done

et exécute le fichier via

bash fichier

PS : Il est dangereux de faire des copier coller sans comprendre mais le code ne devrait entraîner aucun danger vu qu'il ne fait qu'afficher du texte wink

Dernière modification par Hizoka (Le 31/10/2016, à 18:19)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#6 Le 31/10/2016, à 19:11

MineElectricity

Re : Mon scrit bash est-il clair ?

Merci beaucoup !
en fait j'avais simplement oublié le
#!/bin/bash roll

Je test tout ça :3

Hors ligne

#7 Le 31/10/2016, à 19:34

Hizoka

Re : Mon scrit bash est-il clair ?

Hesite pas à revenir sur le topic si tu te ne trouves pas les réponses à tes questions.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#8 Le 31/10/2016, à 19:40

MineElectricity

Re : Mon scrit bash est-il clair ?

À vrai dire je comprends pas grand chose et trouve ma version plus simple roll
autant && || et les bases je comprends autant mon problème est que je n'ai pas assez lus les docs donc je comprends pas encore [[ ${x} -gt ${#@} || ! ${x} =~ ^[0-9]*$ ]]
pour le kiff j'ai essayer d’effectuer une action en fonction de 1 mais j'ai pas trouvé comment récupérer 1 dans ${multinum[@]}
Ne t’embête pas à m’expliquer, ça c'est à moi de le lire dans les docs wink

Bonne soirée!

Hors ligne

#9 Le 31/10/2016, à 19:50

Hizoka

Re : Mon scrit bash est-il clair ?

Après je t'ai filé une fonction que j'ai créé au bout d'un certain temps ne trouvant rien qui corresponde à mes besoins.

Tu n'es pas obligé de tout comprendre pour l'utiliser smile

pour le kiff j'ai essayer d’effectuer une action en fonction de 1 mais j'ai pas trouvé comment récupérer 1 dans ${multinum[@]}

pas compris...
${multinum[@]} contient toutes les réponses numériques.

Sinon en plus simple mais moins joli tongue il existe select
ex :

PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option 3" "Quit")
select opt in "${options[@]}"
do
    case $opt in
        "Option 1")
            echo "you chose choice 1" ;;
        "Option 2")
            echo "you chose choice 2" ;;
        "Option 3")
            echo "you chose choice 3" ;;
        "Quit")
            break ;;
        *) echo invalid option;;
    esac
done

KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#10 Le 31/10/2016, à 20:03

MineElectricity

Re : Mon scrit bash est-il clair ?

Select m'as l'air plus compréhensible  mais corresponds pas à mon besoin
ce que je voulais dire c'est que si j'écris "1 2 4" arriver à savoir si j'ai écris 1 ou pas dans la réponse en nombre; en gros récupérer le read pour l'utiliser


Ce me serait aussi utile dans un autre projet (plus gros et longs) qui consiste à trouver un nombre de 1 à n qui le temps de l'atteindre à était écrit n * 1, je cherche donc une commande pour lire dans tout les nombres précédents le nombre de chiffres 1 pour ensuite les additionner et vérifier si nombre_de_1 = 1
J'ai fait tout le script en python sauf la partie pour compter les 1 précédents x')

Hors ligne

#11 Le 31/10/2016, à 20:25

Hizoka

Re : Mon scrit bash est-il clair ?

ce que je voulais dire c'est que si j'écris "1 2 4" arriver à savoir si j'ai écris 1 ou pas dans la réponse en nombre; en gros récupérer le read pour l'utiliser

multinum=(1 2 3 4 5 6 7)
for rep in ${multinum[@]} 
do
  case ${rep} in
    1) echo "reponse 1" ;;
    2) echo "reponse 2" ;;
    3) echo "reponse 3" ;;
    4) echo "reponse 4" ;;
    *) echo "reponse sup à 4" ;;
  esac
done

ou

multinum=(1 2 3 4 7 8 9 10 11 12 14)
grep -w "1" <<< ${multinum[@]}


J'ai pas tout pigé à ce que tu veux faire mais pour compter le nombre de 5 dans la liste :

multinum=(1 5 3 4 7 8 9 5 11 12 5)
grep -w -c "5" <<< ${multinum[@]}

Mais si tu te debrouilles en python pourquoi venir vers bash ?

Dernière modification par Hizoka (Le 31/10/2016, à 20:26)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#12 Le 31/10/2016, à 20:40

MineElectricity

Re : Mon scrit bash est-il clair ?

Merci  smile
Bah j'ai commencé avec python car je savait pas par quoi commencer, et là j'ai fait du bash juste pour avoir un script postinstall x')
du coup ton grep m'est bien pratique merci !

Hors ligne

#13 Le 31/10/2016, à 21:12

pingouinux

Re : Mon scrit bash est-il clair ?

Bonsoir,
@Hizoka #11 : gep -c compte les lignes, et ici il n'y en a qu'une

multinum=(1 5 3 4 7 8 9 5 11 12 5)
grep -w -c "5" <<< ${multinum[@]}
1

Tu peux faire ceci :

grep -ow  "5" <<< ${multinum[@]} | wc -l
3

Hors ligne

#14 Le 31/10/2016, à 21:28

Hizoka

Re : Mon scrit bash est-il clair ?

en effet, merci pingouinux smile


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#15 Le 31/10/2016, à 21:51

MineElectricity

Re : Mon scrit bash est-il clair ?

(du coup je change un peut de sujet ... j’espère que ça gènes pas trop smile

du coup mon petit script donne ca

#!/bin/sh
# le but de ce script est de compter le nombre de fois qu'il y à de 1 de 1 à n
# le premier est donc 1, il y à 1 1 jusqu'à avoir atteinds 1

# num = le numéro auquel on est (on commence de 2 pour pas trouver 1)
num=(1 2)
# chif = le nombre de 1 pour atteindre ce num (on commence de 2)
chif=(2)

# On compte le nombre de 1
grep -ow "1" <<< ${num[@]} | wc -l

# On fait la boucle tant que on ne trouve pas autant de 1 que le nombre et on interdit le nombre 1 en résultat
while [ "$num" != "$chif" ]
do
    # ajoute 1 au nombre
    chif=(($chif+1))
    # ajoute le nombre dans la liste 
    echo "$chif" >> ${num[@]}
    # affiche le nombre de 1 dans la liste
    grep -ow "1" <<< ${num[@]} | wc -l
done

echo "le résultat est $chif" 

exit 0;

mais il me retourne:
ligne 22: erreur de syntaxe près du symbole inattendu « done »
ligne 22: `done'

Hors ligne

#16 Le 31/10/2016, à 23:08

Hizoka

Re : Mon scrit bash est-il clair ?

chif=(($chif+1))
=>
chif=$(($chif+1))
echo "$chif" >> ${num[@]}
=>
num+=($chif)

mais ca te fait une boucle infini la...

la comparaison de while n'est pas bonne.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#17 Le 31/10/2016, à 23:27

MineElectricity

Re : Mon scrit bash est-il clair ?

#!/bin/bash
# le but de ce script est de compter le nombre de fois qu'il y à de 1 de 1 à n
# le premier est donc 1, il y à 1 1 jusqu'à avoir atteinds 1

# num = le numéro auquel on est (on commence de 2 pour pas trouver 1)
num=(1 2)
# chif = le nombre de 1 pour atteindre ce num (on commence de 2)
chif=(2)

# On fait la boucle tant que on ne trouve pas autant de 1 que le nombre
while [ "$num" != "$chif" ]
do
    # ajoute 1 au nombre
    chif=$(($chif+1))
    # ajoute le nombre dans la liste 
    num+=($chif)
    # affiche à l'user à quel nombre on est
    echo "on en est aux nombre $chif qui à un nombre de 1 de:"
    # affiche le nombre de 1 dans la liste
    grep -o "1" <<< ${num[@]} | wc -l
done

echo "le résultat est $chif" 

exit 0;

Mais comment tu sait que la boucle est infinie ?
edit: Okai le problème est impossible je comprends mieux.

Merci de ton aide, je reposterai si jamais j'ai d'autres questions (après avoir lus les docs) sur mon script postinstall :3

Dernière modification par MineElectricity (Le 31/10/2016, à 23:54)

Hors ligne

#18 Le 01/11/2016, à 15:33

MineElectricity

Re : Mon scrit bash est-il clair ?

Bon je suis donc repassé sur mon script postinstall et je dois avouer que l'idée du combo until + case m'a bien plue

#!/bin/bash 
#2016/11/01 on ubuntu 16.04
#This scrit was writen to complete ubuntu 16.04 installation
#Writen by MineElectricity

#we do a loop with until to ask what to to with case and remember this with name=1
until [ $script = 1 ] || [ $cancel = 1 ]
do
    PS3='Please enter your choice: '
    options=("full update + full clean" "install minimal apps" "install bonus apps" "prelink" "personnalized command" "select 1 + 2 + 3 + 4" "launch script" "Cancel + quit")
    select opt in "${options[@]}"
    do
        case $opt in
            "full update + full clean")
                echo "you chose update + clean"
                update=1
                break ;;               
            "install minimal apps")
                echo "you chose minimal apps"
                minimal=1
                break ;;                
            "install bonus apps")
                echo "you chose bonus apps"
                bonus=1                
            "prelink"
                echo "you chose prelink"
                prelink=1                
            "personnalized command"
                echo "write your command (without the word sudo)(only one possible, reentering in this menu will remove the precedent written command) : "
                read execute
                exe=1
                break;;               
            "select 1 + 2 + 3 + 4")
                echo "you chose update + minimal + bonus + prelink"
                update=1
                minimal=1
                bonus=1
                prelink=1                
            "Launch script"
                script=1
                break ;;            
            "Cancel + quit")
                cancel=1
                break ;;               
            *) echo invalid option;;
        esac
    done
done

#the real script launch you can know wish stem we are with the $name after the if veryfing if the user selected the $name
echo "-------------------\nSome errors may happen please read the terminal, my script don't highligh them\n-------------------"

if [ $update = 1 ]
    apt-get update && apt-get upgrade -y && apt-get full-upgrade -y && apt-get -y clean && apt-get autoremove -y && apt-get autoclean -y
    echo "------update + clean ok------"
fi

if [ $minimal = 1 ]
    apt-get install -y default-jre icedtea-plugin
    echo "java libre ok"
    apt-get install -y libdvd-pkg && dpkg-reconfigure libdvd-pkg
    echo "dvd ok"
    sed -i 's|^exit 0.*$|# Numlock enable\n[ -x /usr/bin/numlockx ] \&\& numlockx on\n\nexit 0|' /etc/rc.local
    echo "numpad at boot ok"
    sed -i 's|^exit 0.*$|# Bluetooth disabled\nrfkill block bluetooth\n\nexit 0|' /etc/rc.local
    echo 'Bluetooth at boot off'
    apt-get install -y zram-config language-pack-fr language-pack-fr-base language-pack-gnome-fr language-pack-gnome-fr-base vlc
    command gsettings set com.canonical.Unity.Lenses disabled-scopes "['more_suggestions-amazon.scope', 'more_suggestions-u1ms.scope', 'more_suggestions-populartracks.scope', 'music-musicstore.scope', 'more_suggestions-ebay.scope', 'more_suggestions-ubuntushop.scope', 'more_suggestions-skimlinks.scope']"
    command gsettings set 'com.canonical.Unity.ApplicationsLens' 'display-available-apps' 'false'
    echo "zram + francais + cannonical buy suggestions ok"
    echo "------minimal ok------"
fi

if [ $bonus = 1 ]
    apt-get install -y audacity blender gimp gnome-session-flashback gnome-shell mixxx openshot pavucontrol vokoscreen skype cheese unity-tweak-tool
    echo "------bonus ok------"
fi

if [ $prelink = 1 ]
    apt-get -y install prelink && sed -i 's/PRELINKING=unknown/PRELINKING=yes/' /etc/default/prelink && /etc/cron.daily/prelink 
    echo 'DPkg::Post-Invoke {"echo Pré-raccordement des bibliothèques en cours, veuillez patienter...;/etc/cron.daily/prelink";}'| tee -a /etc/apt/apt.conf.d/98prelink
    echo "------prelink------"
fi

if [ $exe = 1 ]
    execute
fi

#maj et clean du système avant de quitter
apt-get update && apt-get upgrade -y && apt-get autoremove -y && apt-get autoclean -y

echo "script finished, please read the terminal to verify if errors occured"
exit 0;

:3

Dernière modification par MineElectricity (Le 01/11/2016, à 18:06)

Hors ligne

#19 Le 01/11/2016, à 19:09

Compte anonymisé

Re : Mon scrit bash est-il clair ?

Bonsoir,

Super travail !

plusieurs remarques sur ton script :

if [ $update = 1 ]
    apt-get update && apt-get upgrade -y && apt-get full-upgrade -y && apt-get -y clean && apt-get autoremove -y && apt-get autoclean -y
    echo "------update + clean ok------"

a mon avis il y a 2 commandes superflues. apt-get autoclean fait moins que apt-get clean donc inutile, et full-upgrade et upgrade je pense que full-upgrade fait plus (j'arrive pas à le trouver dans le man).

Le "echo" apparaît même si les commandes échouent. Peut-être qu'afficher le message que si les commandes réussissent, avec par exemple :

if [ $update = 1 ]
    apt update -y && apt full-upgrade -y && apt autoremove -y && apt autoclean -y && echo "------update + clean ok------"

D’ailleurs tu peux aussi remplacer tous les apt-get par apt dans Ubuntu 16.04.

apt-get install -y libdvd-pkg && dpkg-reconfigure libdvd-pkg

je pense que le paquet se configure tout seul après l'avoir installé.

sed -i 's|^exit 0.*$|# Numlock enable\n[ -x /usr/bin/numlockx ] \&\& numlockx on\n\nexit 0|' /etc/rc.local

là tu utilise /usr/bin/numlockx mais qui existe que si on install numlockx (ce qui est a priori pas le cas dans le script).

Question subsidiaire, tu vois une différence notable niveau réactivité/consommation avec zram et prelink d'installé ?

#20 Le 01/11/2016, à 19:59

MineElectricity

Re : Mon scrit bash est-il clair ?

Merci de ta réponse Anonyme68 !

Merci pour le && j'y avais pas pensé je vais réjouter ca de suite !

Pour le apt je sait pas si je veux vraiment l'enlever, tant qu'ils n’annoncent pas supprimer apt-get je préfère laisser ça comme ça ^ .^

pour le numlock c'est écrit dans /etc/rc.local donc ca suffit wink (tester sur mon pc sans numlockx)

Pour moi zram est obligatoire pour éviter l'utilisation abusive du disque dur (et surtout sur ssd) prelink j'ai pas trop vus de différence, autant dans la ram que avec le dd donc je le met en option vu que c'est du dépot universe.

Entre temps j'ai changé mon script (je devrais peut être ajouter des options ?)

#!/bin/bash 
# 2016/11/01 on ubuntu 16.04
# This scrit was writen to complete ubuntu 16.04 installation
# Writen by MineElectricity


# we do a loop with until to ask what to to with case and remember this with name=1

# PS3 is associated with the select option, it's the phrase before the user's prompt
PS3='Please enter your choice: '
# The options the user can select
options=("full update + full clean" "install minimal apps" "install bonus apps" "prelink" "personnalized command" "select 1 + 2 + 3 + 4" "launch script" "cancel + quit")
# an color for the user so he can se better the important things
red='\e[0;31m'
green='\e[1;32m'
neutral='\e[0;m'

# names used to configure "things" to do
update="will the script do apt-get update upgrade ..."
minimal="install java-libre, dvd support, zram-config, cheese, french language, activate numlock on boot and desactivate bluetooth on boot and deactivate canonnical adds"
bonus="install less frequently used application like gimp and gnome-session-flashback"
prelink="install prelink (used to accelerate applications' start)"
script="launch the following of the script"
comfirmation=echo -e "${red} step finished correctly ${neutral}"

# until the script option is at 1 the menu show again
until [ "$script" = 1 ]
do
    # launch the select menu
    select opt in "${options[@]}"
    do
        # alternative to if statement to choose one thing, once choosen it turn to 1 
        # so later the script can launch the "things" then break to close the menu (reopened by until)
        case $opt in
            "full update + full clean")
                echo "you chose update + clean"
                update=1
                break ;;               
            "install minimal apps")
                echo "you chose minimal apps"
                minimal=1
                break ;;                
            "install bonus apps")
                echo "you chose bonus apps"
                bonus=1
                break;;
            "prelink")
                echo "you chose prelink"
                prelink=1
                break;;
            "personnalized command")
                echo "write your command (without the word sudo)(only one possible, reentering in this menu will remove the precedent written command) : "
                read execute
                exe=1
                break;;               
            "select 1 + 2 + 3 + 4")
                echo "you chose update + minimal + bonus + prelink"
                update=1
                minimal=1
                bonus=1
                prelink=1
                break;;       
            "launch script")
                script=1
                break ;;            
            "cancel + quit")
                exit 10;
                break ;;             
            *) echo invalid option;;
        esac
    done
done

# the real script launch you can know wich step we are 
# with the $name after the if veryfing if the user selected the $name
# -e to allow using $
echo -e "${red}Some errors may happen please read the terminal, you can see where they are if you only see one red message and no green. Another update + clean will happen at the end of the script (after the bonus and prelink) ${neutral}"

# every time i do command && tell it's ok and then in another command tell it's finished.
if [ "$update" = 1 ]; then
    # update the system
    apt-get update && apt-get upgrade -y && apt-get full-upgrade -y && apt-get -y clean && apt-get autoremove -y && apt-get autoclean -y && echo -e "${green}update + clean finished with no problem${neutral}"
    echo -e "${red}------update + clean command finished------${neutral}"
fi

if [ "$minimal" = 1 ]; then
    # install java
    apt-get install -y default-jre icedtea-plugin && echo -e "${green}java libre finished with no problem${neutral}"
    echo "${red}java libre finished${neutral}"
    # configure dvd to be readable
    apt-get install -y libdvd-pkg && dpkg-reconfigure libdvd-pkg && echo -e "${green}dvd configured with no problem${neutral}"
    echo "${red}dvd finished${neutral}"
    # activate numlock on boot
    sed -i 's|^exit 0.*$|# Numlock enable\n[ -x /usr/bin/numlockx ] \&\& numlockx on\n\nexit 0|' /etc/rc.local && echo -e "${green}numpad has been set ON at boot${neutral}"
    echo "${red}numpad at boot finished${neutral}"
    # deactivate bluetooth on boot
    sed -i 's|^exit 0.*$|# Bluetooth disabled\nrfkill block bluetooth\n\nexit 0|' /etc/rc.local && echo -e "${green}bluetooth has been set OFF at boot${neutral}"
    echo -e "${red} Bluetooth at boot finished${neutral}"
    # install application that I think should be in every ubuntu
    apt-get install -y zram-config language-pack-fr language-pack-fr-base language-pack-gnome-fr language-pack-gnome-fr-base vlc cheese && echo -e "${green}zram + fr + vlc + cheese installation ok${neutral}"
    echo -e "${red} basic programs install finished${neutral}"
    # remove ubuntu advertisment suggestions
    command gsettings set com.canonical.Unity.Lenses disabled-scopes "['more_suggestions-amazon.scope', 'more_suggestions-u1ms.scope', 'more_suggestions-populartracks.scope', 'music-musicstore.scope', 'more_suggestions-ebay.scope', 'more_suggestions-ubuntushop.scope', 'more_suggestions-skimlinks.scope']" && command gsettings set 'com.canonical.Unity.ApplicationsLens' 'display-available-apps' 'false' && echo -e "${green}cannonical suggestion set to OFF${neutral}"
    echo -e "${red}zram + francais + cannonical buy suggestions finished${neutral}"
    echo -e "${red}------minimal finished------${neutral}"
fi

if [ "$bonus" = 1 ]; then
    # install application that may be used by a medium user
    apt-get install -y audacity blender gimp gnome-session-flashback gnome-shell mixxx openshot pavucontrol vokoscreen skype unity-tweak-tool && echo -e "${green}bonus ok${neutral}"
    echo -e "${red}------bonus finished------${neutral}"
fi


if [ "$prelink" = 1 ]; then
    # install prelink && prelink will update when a package is installed
    apt-get -y install prelink && sed -i 's/PRELINKING=unknown/PRELINKING=yes/' /etc/default/prelink && /etc/cron.daily/prelink && echo 'DPkg::Post-Invoke {"echo Pré-raccordement des bibliothèques en cours, veuillez patienter...;/etc/cron.daily/prelink";}'| tee -a /etc/apt/apt.conf.d/98prelink && echo -e "${green}------prelink ok------${neutral}"
    echo -e "${red}------prelink finished------${neutral}"
fi

# eval is to execute the command
if [ "$exe" = 1 ]; then
    eval "$execute" && echo -e "${green}personnalized command finished${neutral}"
    echo -e "${red}personnalized command ok${neutral}"
fi

# update and clean before quit
apt-get update && apt-get upgrade -y && apt-get autoremove -y && apt-get autoclean -y && echo -e "${green}final update + clean ok${neutral}"
echo -e "${red}final update + clean finished${neutral}"

echo -e "${green}script finished, please read the terminal to verify errors (if one occured there is no green(ok) on top of red(finished))${neutral}"
exit 0;

Hors ligne