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 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 smile

C'est une information importante à donner ça wink


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 smile


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

Hizoke #7 a écrit :

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