Afficher la pageAnciennes révisionsLiens de retourHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== Variables, Redirection des flux ====== <label type="info">Création</label> --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2020/03/11 18:06// ===== Les Variables ===== ==== Les variables utilisateurs ==== Les variables utilisateurs (généralement appelée ''variables'', les autres types étant systématique précisé) sont les variables définies par les utilisateurs manuellement ou au travers d'un script. Elles n'ont d'existence que dans le contexte (script ou session) où elles sont créées. On les distingue alors des variables systèmes ou les variables d'environnement. * Les variables sont définie par leur nom est une valeur leur est affecté avec ''='' : <sxh bash># On définie une variable nommé AGE dont la valeur est 99 AGE=99 </sxh> * Les variables définies peuvent alors être appelées grâce à ''$'' : <sxh bash>echo "l'âge est $AGE" # Retour console l'âge est 99 </sxh> * Dans certains cas, une ambiguïté peut apparaître, ''bash'' n'étant pas capable de déterminer le où se termine le nom de la variable. Dans ces cas, on peut utiliser ''{}'' pour délimiter le nom de la variable : <sxh bash># Exemple 1 # On définie une durée MINUTES=10 # On affiche la durée echo "Durée : $MINUTESm" # Retour console Durée : # $MINUTESm a été considéré comme une variable par bash et non comme une variable suivie d'un caractère. # La variable n'ayant pas été définie au préalable, il n'y a eu aucun affichage. # Exemple 2 # On définie une durée MINUTES=10 # On affiche la durée echo "Durée : ${MINUTES}m" # Retour console Durée : 10m # Cette fois-ci, la variable $MINUTE a bien était interprétée. </sxh> * Une variable contient généralement 4 types de valeurs mais ce type n'est pas figé : * **Nombre** : définie par une valeur numérique. La séparation décimale est le ''.''. * **Commande** : définie par ''$()'' ou ''``''. Le contenu entre parenthèses (ou back-quote) est exécuté et le résultat de la commande est stocké dans la variable. Les opérations mathématiques sont elles contenue dans 2 parenthèses. * **Chaîne de caractère** : la valeur est définie par des apostrophes ou des guillemets. Les chaînes entre apostrophes sont figées alors que celles entre guillemets verront les variables ou caractères spéciaux dans leur contenu interprétés. * Tout autre entrée est considérée comme une chaîne de caractères. <sxh bash>ENTIER=1 NOMBRE=10.2 COMMANDE1=$(cat /etc/issue) COMMANDE2=`ls -l /etc/cron.d` COMMANDE3=$(($ENTIER + 1)) CHAINE1="L'âge est $AGE" CHAINE2='test' </sxh> ==== Les variables systèmes ==== ''bash'' contient un certain nombre de variables prédéfinies ou dont la valeur est gérée par le système. |< 100% 30% 70% >| ^ Variable ^ Explication ^ | ''$?'' | État de la dernière commande exécutée. Les valeurs possibles sont ''0'' pour OK, ''1'' pour avertissement, ''2'' pour échec critique et ''3'' pour état inconnu. | | ''$0'' | Variable contenant le nom du script exécuté. | | ''$1'' à ''$9'' | Variables contenant respectivement les premiers, seconds, etc jusqu'aux neuvièmes arguments du script exécuté. | | ''$*'' | Variable contenant tous les arguments du script exécuté. Ces derniers sont alors traités comme un seul élément. | | ''$@'' | Variable contenant tous les arguments du script exécuté. Ces derniers sont alors traités comme une liste d'éléments séparés. | | ''$#'' | Variable contenant la quantité de paramètres indiqués pour le script exécuté. | | ''$-'' | Variable contenant les options du shell. | | ''$$'' | Variable contenant le PID (**P**rocessus **ID**entification) du shell. | | ''$!'' | Variable contenant le PID de dernier processus exécuté en arrière-plan. | | ''$_'' | Variable contenant le dernier argument de la commande précédente. | ==== Les variables d'environnement ==== Les variables d'environnement sont des utilisables par tout le système. La commande ''env'' permet de les consulter. Pour en créer une ou la modifier, il suffit de la déclarer comme n'importe quelle variable puis d'utiliser la commande ''export'' suivie du nom de la variable déclarée. ===== Redirection de flux ===== La redirection de flux est très largement utilisée en ''bash''. Elle consiste a envoyer les sorties standard et/ou d'erreur vers un fichier ou l'entrée standard d'une autre commande. On peut aussi s'en servir pour envoyer les données d'un fichier dans l'entrée standard d'une commande. |< 100% 10% 10% 50% 30% >| ^ Redirecteur ^ Fonction ^ Explication ^ Exemple ^ | ''>'' | Redirige | Envoi la sortie standard de la commande de gauche vers le fichier de droite. Si il n'existe pas, alors ce dernier sera crée. Son contenu est alors remplacé par le flux redirigé. |<sxh bash> ls > file.txt</sxh>| | ''>>'' | Concatène | Ajoute le flux de la sortie standard de la commande au contenu déjà existant du fichier. |<sxh bash>ls -l >> file.txt</sxh>| | ''2>'' | Redirige les erreurs | Envoi la sortie d'erreur de la commande de gauche vers le fichier de droite. Si il n'existe pas, alors ce dernier sera crée. Son contenu est alors remplacé par le flux redirigé. |<sxh bash> mkdir 2> error.log</sxh>| | ''2>>'' | Concatène les erreurs | Ajoute le flux de la sortie d'erreur de la commande au contenu déjà existant du fichier. |<sxh bash>chmod 2>> error.log</sxh>| | ''> /dev/null'' | Supprime | Supprime l'affichage de la sortie standard |<sxh bash>ls > /dev/null</sxh>| | ''2>&1'' | Redirige erreur vers standard | Redirige la sortie d'erreur de la commande vers son entrée standard. |<sxh bash>ls -lR > /dev/null 2>&1</sxh>| | ''<'' | Injecte | Injecte le contenu du fichier de droite dans l'entrée standard de la commande de gauche. |<sxh bash>cat < file.txt </sxh>| | ''<<'' et ''<<-'' | HereDoc | Voir chapitre dédié : [[bash_base_2|Boucles & HereDoc]] |<sxh bash>cat << EOF test test2 EOF</sxh>| | ''|'' | Pipe | Redirige la sortie standard de la première commande vers l'entrée standard de la seconde. |<sxh bash>cat /var/log/syslog | grep 'deny'</sxh>| | ''|&'' | Connexion | Redirige les sorties standard et d'erreur de la première commande vers l'entrée standard de la seconde. |<sxh bash>command1 |& command2</sxh>| ~~DISCUSSION~~ bash_base_0.txt Dernière modification : 2021/03/05 16:14de nekan