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 04/09/2018, à 17: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, à 18:10)

Hors ligne

#2 Le 04/09/2018, à 17: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, à 17: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 résolu, 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, à 18: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, à 10: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 )

wink

Hors ligne

#6 Le 07/09/2018, à 12:06

Postmortem

Re : Résolu Script d'essai

kholo a écrit :

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 )

wink

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, à 17: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, à 17:38

Postmortem

Re : Résolu Script d'essai

kholo a écrit :

@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, à 17:43)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne