#1 Le 26/04/2020, à 14:24
- joe217
[Résolu] table de multiplication en bash
Bonjour,
je dois écrire un script qui affiche une table de multiplication avec M lignes et N colonnes, M et N étant les arguments.
Puis mettre les nombres pairs en rouge, et ceux divisibles par 3 en bleu
j'ai deja fais ca;
for x in {1..$1}
do
for y in {1..$2}
do
echo -n "$(( $x * $y )) "
done
echo
done
ça m'affiche ma table de multiplication sans soucis; mais maintenant pour les couleurs ce que je dois faire c'est ça:
if [[ x % 2 == 0 ]]
then x="\031m$x "
?
merci
Dernière modification par joe217 (Le 26/04/2020, à 20:15)
Hors ligne
#2 Le 26/04/2020, à 15:01
- Hizoka
Re : [Résolu] table de multiplication en bash
Salut,
ça marche chez toi ça ?
{1..$1}
Pas chez moi...
Il te faudrait un petit if comme tu le propose de style :
if [[ $((x % 2)) -eq 0 && $((x % 3)) -eq 0 ]]
then
# Couleur orange
elif [[ $((x % 2)) -eq 0 ]]
then
# Couleur rouge
elif [[ $((x % 3)) -eq 0 ]]
then
# Couleur bleu
fi
ou
if ((x % 2 == 0)) && ((x % 3 == 0))
then
# Couleur orange
elif ((x % 2 == 0))
then
# Couleur rouge
elif ((x % 3 == 0))
then
# Couleur bleu
fi
Pour tout ce qui est couleur, tu peux utiliser aussi tput :
echo "$(tput setaf 1)Ce texte est rouge mais devient $(tput setaf 2) vert avant de perdre sa couleur $(tput sgr0)"
Dernière modification par Hizoka (Le 26/04/2020, à 15:05)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#3 Le 26/04/2020, à 15:33
- joe217
Re : [Résolu] table de multiplication en bash
bonjour merci de ta réponse;
oui ca marche chez moi car il faut faire zsh fichier.sh suivi de deux arguements 5 et 10 par exemple et on obtient 5 lignes et 10 colonnes;
>multi.sh 5 10
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
j'ai essayé avec le if et j'obtiens:
#!/bin/zsh
for x in {1..$1}
do
for y in {1..$2}
do
echo -n "$(( $x * $y )) "
if [[ $((x % 2)) -eq 0 ]]
then echo -en "\e[31${x}m#\e[0m"
done
echo
done
mais j'obtiens
parse error near echo
je veux mettre les nombres pairs en rouge sur la table de mutliplication
merci
Dernière modification par Nuliel (Le 26/04/2020, à 18:27)
Hors ligne
#4 Le 26/04/2020, à 15:44
- Hizoka
Re : [Résolu] table de multiplication en bash
OK, en bash, ça ne fonctionne pas
C'est une information importante à donner ça
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#5 Le 26/04/2020, à 16:02
- joe217
Re : [Résolu] table de multiplication en bash
tu peux me dire ou est l'erreur;
if [[ $((x % 2)) -eq 0 ]]
then echo -en "\e[31${x}m#\e[0m"
merci
Hors ligne
#6 Le 26/04/2020, à 16:11
- pingouinux
Re : [Résolu] table de multiplication en bash
Bonjour,
Marche en bash et zsh :
for x in $(seq 1 $1)
do
for y in $(seq 1 $2)
do
p=$((x*y))
((p%2)) || echo -ne "\e[31m"
((p%3)) || echo -ne "\e[34m"
((p%6)) || echo -ne "\e[33m"
printf "%2d " $p
echo -ne "\e[0m"
done
echo
done
Édité : Les couleurs sont fonction du produit, à adapter si elles ne doivent dépendre que de x
Dernière modification par pingouinux (Le 26/04/2020, à 16:13)
Hors ligne
#7 Le 26/04/2020, à 16:29
- Hizoka
Re : [Résolu] table de multiplication en bash
Si tu joues avec des couleurs, je te conseille d'utiliser des variables pour plus de lisibilité et éviter les erreurs :
Rouge="\e[31m"
RAZ="\e[m"
echo -e "${Rouge}$x${RAZ}"
@pingouinux
zsh ne peut pas utiliser ça ?
for ((x=1; x <= $1; x++))
Pour avoir fait des tests, passer par seq est plus long (bon, en l'utilisant une fois...).
Dernière modification par Hizoka (Le 26/04/2020, à 16:32)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#8 Le 26/04/2020, à 17:33
- joe217
Re : [Résolu] table de multiplication en bash
merci beaucoup pour votre aide ça marche, je sais mieux manipuler les couleurs maintenant merci
Hors ligne
#9 Le 26/04/2020, à 17:40
- Hizoka
Re : [Résolu] table de multiplication en bash
Si c'est bon, édite ton 1er message pour ajouter [Résolu] dans ton titre
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#10 Le 26/04/2020, à 18:04
- Hizoka
Re : [Résolu] table de multiplication en bash
ajouter à ton titre, pas le remplacer...
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#11 Le 26/04/2020, à 19:12
- pingouinux
Re : [Résolu] table de multiplication en bash
zsh ne peut pas utiliser ça ?
for ((x=1; x <= $1; x++))
Il faut apparemment faire ceci
for ((x=1; $x <= $1; x++))
Hors ligne
#12 Le 26/04/2020, à 20:18
- Watael
Re : [Résolu] table de multiplication en bash
à noter que si on t'a demandé de le faire en bash, alors zsh n'est pas une bonne solution.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne