Pages : 1
#1 Le 04/09/2018, à 16:09
- Osborne/47
Résolu Script d'essai
bonjour à tous
j'ai installé Ubuntu 18 04 LTS voulu faire un script d'essai
#!/bin/bash
Tableau =("pierre" "paul" "léon" "néo" "soen" "jean")
Tableau[7] = "claude"
echo ${Tableau[2]}
echo ${Tableau[*]}
read -p "entrez votre nom: " nom
Tableau[] ="nom"
me renvoie
./jancript.sh: ligne 2: erreur de syntaxe près du symbole inattendu « ( »
./jancript.sh: ligne 2: `Tableau =("pierre" "paul" "léon" "néo" "soen" "jean")'
pourtant la ligne 2 avec la ligne 5 dans le terminal fonctionnent correctement
Dernière modification par Osborne/47 (Le 04/09/2018, à 17:10)
Hors ligne
#2 Le 04/09/2018, à 16:20
- pingouinux
Re : Résolu Script d'essai
Bonjour,
Il ne faut pas d'espaces de part et d'autre du signe =.
Hors ligne
#3 Le 04/09/2018, à 16:50
- erresse
Re : Résolu Script d'essai
... et se souvenir que les tableaux sont indexés à partir de 0, pas de 1. En ajoutant "claude" en position 7, tu laisses le rang 6 vide. La dernière ligne est erronée du fait qu'elle devrait indiquer un indice pour ranger la variable $nom (et non pas nom tout court).
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#4 Le 04/09/2018, à 17:03
- Osborne/47
Re : Résolu Script d'essai
j'ai corrigé mon prog. merci à vous deux l'essai fonctionne
Hors ligne
#5 Le 05/09/2018, à 09:09
- kholo
Re : Résolu Script d'essai
salut,
petites astuces :
Tableau+=( "$nom" )
et : liste avec des sauts de lignes en tableau
Tableau="pierre
paul
léon
néo
soen
jean"
IFS=$'\n' Tableau=( $Tableau )
ou (avec des tabulations)
Tableau="pierre paul léon néo soen jean"
IFS=$'\t' Tableau=( $Tableau )
Hors ligne
#6 Le 07/09/2018, à 11:06
- Postmortem
Re : Résolu Script d'essai
salut,
petites astuces :Tableau+=( "$nom" )
et : liste avec des sauts de lignes en tableau
Tableau="pierre paul léon néo soen jean" IFS=$'\n' Tableau=( $Tableau )
ou (avec des tabulations)
Tableau="pierre paul léon néo soen jean" IFS=$'\t' Tableau=( $Tableau )
Salut,
Attention en faisant IFS=$'\t' Tableau=( $Tableau ), tu changes la valeur de IFS pour le reste du script. Faut le savoir sinon ça fait des surprises !
seb@seb:~$ cat -A <<<"$IFS"
^I$
$
seb@seb:~$ IFS=$'\n' Tableau=( $Tableau )
seb@seb:~$
seb@seb:~$ cat -A <<<"$IFS"
$
$
seb@seb:~$
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#7 Le 07/09/2018, à 16:31
- kholo
Re : Résolu Script d'essai
@Postmortem
non, pas quand on fait un changement et un traitement sur une même ligne...
demo :
IFS='t' echo toutou
echo 9"$IFS"9
retour :
toutou
9
9
on ne les voit pas mais on a bien un espace, une tabulation puis un saut de ligne !
Hors ligne
#8 Le 07/09/2018, à 16:38
- Postmortem
Re : Résolu Script d'essai
@Postmortem
non, pas quand on fait un changement et un traitement sur une même ligne...
demo :IFS='t' echo toutou echo 9"$IFS"9
retour :
toutou 9 9
on ne les voit pas mais on a bien un espace, une tabulation puis un saut de ligne !
Oui, mais là, tu fais une affectation de variable suivie d'une commande. Donc la variable modifiée ne l'est que dans l'environnement de la commande (echo ici)
Plus haut, tu faisais 2 affectations et donc, tu modifiais bien l'IFS dans ta session :
seb@seb:~$ cat -A <<<$IFS
^I$
$
seb@seb:~$ IFS=@ echo blabla # Affectation suivie d'une commande, IFS n'est modifié que pour echo
blabla
seb@seb:~$ cat -A <<<$IFS # IFS non modifié dans la session
^I$
$
seb@seb:~$ IFS=@ t=t # 2 affectations
seb@seb:~$ cat -A <<<$IFS # IFS modifié dans la session
@$
seb@seb:~$
Dernière modification par Postmortem (Le 07/09/2018, à 16:43)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
Pages : 1