Pages : 1
#1 Le 10/04/2017, à 16:07
- Hedi934
Script shell
Bonjour j'ai pour but de dessiner une ligne grace a un script point que j'ai deja fait et qui prend une coordonne x et y en argument et un caractère a mettre dans cette cordonne
mon programme donne sa
#!/bin/bash
#Met y a la bonne valeur
(($2==10-$2 ))
#compte le nombre de ligne
for j in {1..10}
do
#condition pour savoir quel ligne et concerné
if (( j == $2 ))
then
#boucle pour compter le nombre de colone
for i in {1..20}
do
echo -n "1"
#condition pour savoir quel colone et concerné
if (( i == $1-1))
then
echo -n "$3"
#test si une autre incrementation inutile va s'ajouter et sors de la boucle si c'est la cas
if (( i == 19 ))
then
break
fi
fi
done
else
#ecrit le reste des ligne composer de 1
for i in {1..20}
do
echo -n "1"
done
fi
echo
done
et me done par exemple avec ces arguement 20 10 c
11111111111111111111
11111111111111111111
11111111111111111111
11111111111111111111
11111111111111111111
11111111111111111111
11111111111111111111
11111111111111111111
11111111111111111111
1111111111111111111c
mon but serait de faire un script avec comme arguement une coordonne y avec x1 et x2 et bien sur le caractère en utilisant le script point que j'ai fait ci dessu de tel sort que pour les arguement
10 20 10 c il m'affiche
11111111111111111111
11111111111111111111
11111111111111111111
11111111111111111111
11111111111111111111
11111111111111111111
11111111111111111111
11111111111111111111
11111111111111111111
111111111ccccccccccc
ce que je n'arrive pas a obtenir merci de vos reponse
Hors ligne
#2 Le 10/04/2017, à 20:07
- Hizoka
Re : Script shell
Salut, si tu pars sur du python3, un truc tout simple :
>>> def test(val1, nb1, val2, nb2):
... print(val1 * nb1)
... print(val2 * nb2)
>>> test("10", 20, "c", 10)
1010101010101010101010101010101010101010
cccccccccc
c'est juste un exemple car ça ne remplit pas exactement ta demande, mais c'est surement plus simple ainsi
sinon, en bash tu peux faire un truc du genre :
x=10
for ((i=0; i<${x}; i++))
do
echo "$i"
done
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#3 Le 10/04/2017, à 21:17
- MicP
Re : Script shell
bonsoir
car="c"
repet=10
ligne=10
colonne=20
tput cup $ligne $colonne; printf '%.s'$car $(seq $repet)
En espérant avoir bien compris quel était le but recherché.
Dernière modification par MicP (Le 10/04/2017, à 21:24)
Hors ligne
#4 Le 10/04/2017, à 22:23
- Hizoka
Re : Script shell
Perso ça me renvoie un truc crados du genre :
┌─[hizoka@~]
└─> cccccccccc┌─[hizoka@~]
└─> izoka@~]
└─> tput cup $ligne $colonne; printf '%.s'$car $(seq $repet)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#5 Le 11/04/2017, à 15:56
- Hedi934
Re : Script shell
Le but recherche et d'ecrire un script trait qui dessine une droite horizontale de coordonné y et allan de x1 jusqua x2 grace au script point.sh qui prend en argument x y et le caractere , ce que je n'arrive pas a obtenir directement dans le terminal ni dans un fichier d'ailleur
Hors ligne
#6 Le 13/04/2017, à 14:26
- PeekLeon
Re : Script shell
Bonjour,
J'ai fais ce code :
#!/bin/bash
### CONSTRUCTION DU TABLEAU
nbCol=10
nbLigne=20
charTab="1"
### CONSTRUCTION DE LA LIGNE
x=2 #Colonne
y=5 #Ligne
charLigne="-"
echo ""
#### LIGNES
for i in `seq 1 $nbLigne`
do
### COLONNES
for j in `seq 1 $nbCol`
do
if [[ $i -eq $y ]]
then
if [[ $j -gt $x ]]
then
echo -n "$charLigne"
else
echo -n $charTab
fi
else
echo -n $charTab
fi
done
echo "" #Retour à la ligne
done
En espérant avoir aidé.
Par contre ici on donne l'emplacement de la ligne sur x et y soit colonne 2 ligne 5 mais sans donner la fin de la ligne.
Hors ligne
#7 Le 13/04/2017, à 16:29
- Watael
Re : Script shell
c'est bien.
#!/bin/bash
# Tableau
nbCol=10
nbLigne=20
# Déclencheurs de modification
colMod=2 # donner des noms évocateurs aux variables
ligMod=5
# Caractères
char="1"
charMod="-"
echo ""
for ((ligne=1;ligne<=nbLigne;ligne++)) #pour éviter l'appel d'une commande externe
do
for ((col=1;col<=nbCol;col++))
do
((ligne==ligMod? col>colMod?1:0 :0)) && printf "$charMod" || printf $char
done
echo ""
done
Dernière modification par Watael (Le 13/04/2017, à 16:31)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#8 Le 13/04/2017, à 16:52
- Hizoka
Re : Script shell
Watael, peux tu expliquer ((ligne==ligMod? col>colMod?1:0 :0)) stp.
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#9 Le 13/04/2017, à 17:44
- Watael
Re : Script shell
c'est pareil que ce que PeekLeon a écrit :
si ligne EQ ligMod
alors
si col GT colMod
alors
impr modif
autre
impr defaut
finsi
autre
impr defaut
finsi
((condition?vrai:faux))
j'en ai imbriqué une :((condition? (condition?vrai:faux) :faux))
dans une évaluation arithmétique, zéro est faux.
Dernière modification par Watael (Le 13/04/2017, à 17:48)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#10 Le 13/04/2017, à 18:14
- Hizoka
Re : Script shell
Merci, je ne connaissais pas du tout cette forme de condition.
moins lisible mais terriblement plus courte.
c'est étonnant cette forme où il ne faut pas utiliser le symbole $ pour les variables.
ca vient du c ? car le style ressemble à la boucle for.
Dernière modification par Hizoka (Le 13/04/2017, à 18:16)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#11 Le 13/04/2017, à 18:29
- Watael
Re : Script shell
entre les doubles parenthèses, c'est une évaluation arithmétique (ça ne sert pas que dans une boucle for), où les $ sont facultatifs.
je ne sais pas d'où ça vient. du C, en passant par KSH ?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#12 Le 13/04/2017, à 19:51
- PeekLeon
Re : Script shell
C'est beaucoup plus élégant cette façon de faire Watael, je prend
Hors ligne
#13 Le 14/04/2017, à 15:07
- MicP
Re : Script shell
[hors sujet]
…je ne sais pas d'où ça vient. du C, en passant par KSH ?…
Ça ressemble à la syntaxe d'un test conditionnel en C :
(condition) ? instruction si vrai : instruction si faux
Mais quand je t'avais vu l'utiliser dans le 'format' d'un printf d'awk j'ai été "scié"
https://forum.ubuntu-fr.org/viewtopic.p … #p21669658
… fmt = i==n?"%s":"%s " gsub("[^:]*:","",ar[i]) printf(fmt, ar[i]) …
Faut dire qu'en tant qu'autodidacte, j'ai énormément de choses à apprendre encore.
[/hors sujet]
Dernière modification par MicP (Le 14/04/2017, à 19:37)
Hors ligne
Pages : 1