Deuxième partie cette mini-tutoriel programmation en Frapper, où nous apprenons à utiliser des cycles et d'autres outils qui nous aideront à améliorer les fonctionnalités de notre scripts. |
Le conditionnel If
La fonction de If est d'appliquer un filtre et d'effectuer une opération ou une tâche pour chaque type de filtre appliqué. Sa structure est la suivante:
Si [condition]; puis commandes elif [condition]; alors les commandes else; commandes fi
Un exemple est présenté à côté de la boucle For dans sa section respective.
Cycles
1. While: il exécutera toutes les commandes spécifiées entre faire et terminé tant que la condition est vraie. Si nous voulons lui passer des opérateurs de comparaison, l'expression doit être entre crochets.
pendant que CONDITION / COMMAND effectue les commandes
Exemple: table de multiplication d'un nombre
#! / bin / bash X = 1 echo "Entrez un nombre et appuyez sur ENTREE" read M # La boucle contrôle que X est inférieur ou égal à 10 tandis que [$ X –le 10] fait #In R nous stockons la multiplication de X par MR = $ [X * M] # Cette multiplication est imprimée à l'écran echo "$ M * $ X = $ R" #Avec let, on augmente la valeur de X de 1 unité soit X = $ X + 1 fait
2. Pour: stocke une liste d'éléments dans une variable, qui sera utilisée pour effectuer certaines opérations à chaque cycle.
pour VARIABLE dans ELEMENTS faire les commandes faites
Exemple: programme qui copie un fichier d'un dossier à un autre, en remplaçant un ancien fichier.
# / bin / bash #Nous établissons les répertoires source et destination ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Nous nous positionnons dans le cd source $ ORIGIN #De tous les fichiers, nous ne voulons que celui qui est # appeler FILE pour FILE dans * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f nous filtre les fichiers normaux, puisque les répertoires ne sont # rien de bon pour nous. –Ne filtre pas # fichiers «plus récents» que ceux # trouvés dans le dossier de destination si [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; puis echo "Copie de $ FILE ..." # nous copions le fichier avec cp cp $ FILE $ ARCH-DESTINATION fi done #Nous cd pour quitter le dossier source cd
Autre exemple: script où l'utilisateur doit deviner un nombre aléatoire généré par l'ordinateur.
# / bin / bash #Un nombre aléatoire est généré de 1 à 10, il est # enregistré dans RANDOM RANDOM = $ [$ RANDOM% 10 + 1] tandis que [1] do echo –n "Entrez un nombre:" lisez NUM # Comparez si le nombre choisi par l'utilisateur est #égal à RANDOM; n'oubliez pas d'utiliser $ pour évaluer les #valeurs des variables et non leurs noms si [“$ NUM –eq“ $ RANDOM ”]; puis echo "Vous avez raison!" #break permet de terminer la boucle pendant la pause #Si le nombre est inférieur à RANDOM elif [“$ NUM –gt“ $ RANDOM ”]; then echo "C'est moins" "Sinon, c'est plus grand que RANDOM sinon echo" EST plus grand "fi done
3. Jusqu'à: structure assez similaire à While, sauf que le code s'exécute toujours alors que l'évaluation de la condition est négative, c'est-à-dire que le programme continue à s'exécuter "jusqu'à ce que la condition se produise"
jusqu'à ce que CONDITION / COMMAND effectue les commandes
Exemple: imprimez les nombres 10-20 dans l'ordre décroissant
#! / bin / bash CONT = 20 # Tant que le compteur est inférieur à 10 (-lt, «inférieur # à») le code est exécuté jusqu'à [$ CONT -lt 10]; do echo "COUNTER $ CONT" #A CONT est soustrait d'une unité soit CONT- = 1 done
4. Select: ce dernier cycle est un cas particulier, car il est généralement utilisé pour faire des menus rapidement. Cela fonctionne de manière similaire à la boucle For.
sélectionnez VARIABLE dans la LISTE des commandes effectuées
Exemple: donnez à l'utilisateur la possibilité de continuer ou de terminer le script.
#! / bin / bash #item est une variable qui répond à ce que #user choisit, Continuer et Terminer sont les #options disponibles pour lui, bien que d'autres options puissent être ajoutées terminer le programme, puis avec pause nous sortons du cycle. if [$ item = "Terminer"]; puis break fi done
Je pense quelque chose comme ceci: tar -cf - Répertoire | (cd / autre / répertoire; tar -xvf -)
Ensuite, cela ressemblerait à / another / directory / Directory
De cette façon, j'ai compressé un répertoire et vous le décompressez dans un autre endroit….
Bonjour, bon tuto, j'apprends sur le sujet et tout va bien, seulement je n'ai pas pu faire un programme qui m'aide, pour voir si tu peux m'aider s'il te plait.
J'ai besoin de faire un cycle, dans lequel il recevra comme paramètres une liste d'un fichier source, cette liste n'apporte que des noms (sans extension), pour que le cycle fasse ce qui suit, recherchez ledit nom reçu dans un répertoire (qui est celui que nous rechercherons) , extrayez et copiez le fichier (nom complet déjà avec l'extension) et le chemin absolu et créez-le dans un autre fichier de destination.
Jusqu'à présent, j'ai ce qui suit:
pendant la lecture de la ligne
do
echo -e "$ ligne"
find / home / monutilisateur / dof "$ line" -exec readlink -f {};
done <testlist.txt Jusqu'à présent, j'ai lu le fichier, toutes les lignes qu'il contient, mais je ne peux pas le faire rechercher ce fichier et extraire les informations, si vous pouvez m'aider s'il vous plaît, merci. À votre santé
Merci beaucoup pour la contribution 🙂
salut ... J'espère que vous pourrez aider dans la prochaine pratique ... Décompressez le fichier en tgz dans le répertoire spécifié, en plus de spécifier l'utilisateur et le groupe pour tous les répertoires et fichiers existants, et d'attribuer des autorisations aux fichiers et répertoires
remarque: fichiers prêts pour la lecture et l'écriture
autorisation d'exécution des répertoires
ARCH-DESTINATION est une variable dans laquelle nous voulons enregistrer le chemin du fichier de destination, enregistrer pour la redondance. Ensuite, à cette variable, nous indiquons la variable DESTINATION, qui ci-dessus contient le chemin du dossier Documents et nous ajoutons la "variable" FILE, qui contient le nom du fichier. Si ce fichier était, par exemple, list.doc, la variable ARCH-DESTINATION serait égale à /home/Usuario/Documentos/listado.doc
C'est l'article précédent. Vous pouvez y accéder à http://usemoslinux.blogspot.com
Étreinte! Paul.
Bonjour mec juste merci, très bien votre blog, mais je ne peux pas obtenir la première partie de la programmation dans Bash, où je l'obtiens merci, salutations
Deux parties extraordinaires, mes sincères félicitations.
Simplement merveilleux.
Bien
Bonjour, je fais un programme avec un CASE, ce que je veux qu'il fasse et je ne sais pas comment, par exemple:
echo Choisit une option:
echo
echo 1. option 1
echo 2. option 2
echo 3. option 3
echo 4. option 4
echo 5. Quitter
lire var
case "$ var" dans
1)
echo "Vous avez sélectionné l'option 1"
;;
2)
echo "Vous avez sélectionné l'option 2"
;;
3)
chassèrent "….."
;;
4)
chassèrent "…."
;;
5)
chassèrent "…"
;;
*)
echo "mauvaise option"
;;
Esac
ok ce que je ne sais pas faire c'est que quand je sélectionne l'option 4 qui est de quitter, demande si je veux vraiment sortir, et donne-moi 2 options O & N
et l'autre est que lorsque vous sélectionnez autre chose que les nombres 1..5, ne votez pas pour moi à partir du script….
Pourriez-vous m'aider merci.
Salut, j'ai commencé le script il y a 1 mois et grâce à vos messages de script. J'aurai fait environ 15-20. Merci beaucoup d'avance. Mais maintenant, notre professeur nous a confié un travail dont je suis devenu stagnant. Puisque l'enseignant demande:
en passant un répertoire, copiez chez vous tous les fichiers qui se trouvent dans ce répertoire par ordre alphabétique et en les nommant fichier1 fichier2 etc ... etc ...
Maintenant, je suis au moment de la recherche ou de la localisation, je voulais utiliser find mais en lui donnant le code d'erreur lorsque je le mets via dev null, les autorisations refusées, je me trompe et en mettant la localisation que je suis ici:
localiser $ 1 | grep "/ $ {1} \ $"
mais bien sûr avec cela, ils sortent tous ...
Merci beaucoup si vous le lisez.
Si vous pouvez m'aider, ce serait une grande faveur.
J'aimerais que vous m'aidiez avec ça.
1.-Entrer un nombre entier sur le clavier et afficher deux fois et tripler ce nombre à l'écran. 2.- Créez un programme pour décider si un nombre saisi au clavier est divisible par 3 ou non.
3.- Créez un programme pour trouver la somme de: ???????? + ???????? + ???????? + ???????? + ⋯? ???????
4.- Faites un programme pour trouver la somme 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
5.-Créez un programme qui imprime le mot Linux sur l'écran 10 fois
6.-Créez un programme qui imprime le mot Linux sur l'écran le nombre de fois indiqué par un utilisateur.
7.-Entrez un montant en heures et convertissez-les en minutes et secondes.
8.-Calculer l'aire d'un triangle
9.-Entrez un nombre au clavier, puis si vous entrez 2, il doit être au carré, 3 au cube, 4 au quatrième et ainsi de suite jusqu'à 6.
10-Calculez la rente qu'un étudiant doit payer, le code de spécialité doit être entré, et les jours en retard:
CODE
SPÉCIALITÉ
MONTANT
PENDANT PAR JOUR
1
L'INFORMATIQUE
160
1
2
ALLAITEMENT
150
1.5
3
SECRÉTARIAT
140
2
4
TOURISME
180
2.5
5
COMPTABLE
160
1
Vous devez indiquer la spécialité que vous étudiez, le coût de la pension, le défaut et le montant total à payer.
Bonjour, quelqu'un peut-il m'aider?
J'ai besoin de «Demander trois mots au clavier et les afficher par ordre alphabétique de A à z»
En langage Bash ou sh pour LINUX porfaborrrr