Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2711 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  bash, écrire dans un tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

bash, écrire dans un tableau

n°1162185
dams78
développateur
Posté le 09-09-2009 à 19:10:42  profilanswer
 

bonsoir,
 
depuis quelques temps j'ai un script bash qui ne fonctionne plus, et pourtant j'ai rien changer dedans...


find $rep -name *.jpg -type f | ( while read LINE
do
  wall[$cpt]=`echo "$LINE"`
  cpt=$(($cpt+1))
done
 
i=$(($RANDOM % $cpt))
...


et je me retrouve avec cette erreur : scripts/bin/wallpaper.sh: 34: wall[0]=/home/damien/wallpapers/980720669.jpg: not found
et aussi scripts/bin/wallpaper.sh: 31: arithmetic expression: expecting primary: " % 293" (cette erreur provient du $RANDOM, mais je dois utiliser quoi maintenant?)
 
si vous savez ce qui cloche je suis prenneur ;)
merci


---------------
dam's (debianer), ma galerie Flickr
mood
Publicité
Posté le 09-09-2009 à 19:10:42  profilanswer
 

n°1162226
twocats
Posté le 09-09-2009 à 22:34:28  profilanswer
 

Je sais pas mais :

Citation :

wall[$cpt]=`echo "$LINE"`


C'est affreux :heink:  

Citation :

wall[$cpt]="${LINE}"


et :

Citation :

cpt=$(($cpt+1))


En plus clean :

Citation :

let cpt++


Non ?


---------------
La réponse est 42
n°1162235
fighting_f​alcon
Posté le 09-09-2009 à 22:59:10  profilanswer
 

dams78 a écrit :

scripts/bin/wallpaper.sh: 34: wall[0]=/home/damien/wallpapers/980720669.jpg: not found

 

Ligne fautive :

Citation :

wall[$cpt]=`echo "$LINE"`

 

on décortique :

 

echo "$LINE" => tu affiches le contenu de la variable LINE
`echo "$LINE"` => tu exécutes (``) le résultats de la commande echo ... => tu exécutes /home/....
wall[$cpt]=`...` => le résultat de l'exécution de ce que ton echo a affiché est stocké dans ton tableau wall

Message cité 1 fois
Message édité par fighting_falcon le 09-09-2009 à 22:59:26
n°1162260
dams78
développateur
Posté le 10-09-2009 à 07:51:11  profilanswer
 

le truc c'est qu'il y a encore quelques temps (un ou deux mois) ce script fonctionnait
par contre c'est vrai que le echo $LINE c'est moche, juste après avoir écris ce message j'ai essayé wall[$cpt]="$LINE" ça faisait pareil, je vais donc essayer wall[$cpt]="${LINE}", pareil pour le compteur
 
je vous tiens au courant ce soir, merci de votre aide


Message édité par dams78 le 10-09-2009 à 07:51:35

---------------
dam's (debianer), ma galerie Flickr
n°1162261
o'gure
Modérateur
Multi grognon de B_L
Posté le 10-09-2009 à 07:53:38  profilanswer
 

fighting_falcon a écrit :

`echo "$LINE"` => tu exécutes (``) le résultats de la commande echo ... => tu exécutes /home/....


Non.
`truc` => exécute truc
`echo toto` => exécute echo toto => affiche toto


Message édité par o'gure le 10-09-2009 à 07:53:51

---------------
Relax. Take a deep breath !
n°1162542
dams78
développateur
Posté le 10-09-2009 à 16:38:45  profilanswer
 

pour l'instant j'ai droit à ça
scripts/bin/wallpaper.sh: 31: let: not found

 

et toujours l'erreur du fichier introuvable


Message édité par dams78 le 10-09-2009 à 16:40:39

---------------
dam's (debianer), ma galerie Flickr
n°1162545
wedgeant
Da penguin inside
Posté le 10-09-2009 à 16:44:46  profilanswer
 

et euh ...  

cpt=0
for i in $(find ...); do  
    wall[$cpt]=$i
    let cpt++
done


non ? :??:


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°1162582
dams78
développateur
Posté le 10-09-2009 à 19:02:35  profilanswer
 

ça n'a pas l'aire...


scripts/bin/wallpaper.sh: 24: wall[0]=/home/damien/wallpapers/soft/1548748147.jpg: not found
scripts/bin/wallpaper.sh: 24: let: not found


---------------
dam's (debianer), ma galerie Flickr
n°1162584
fighting_f​alcon
Posté le 10-09-2009 à 19:10:16  profilanswer
 

ta distrib, c'est pas debian stable des fois ?
 
parce que si oui, sur etch, /bin/sh était un lien vers bash, sous lenny c'est devenu un lien vers dash.
C'est peut être ça le problème ...

n°1162585
dams78
développateur
Posté le 10-09-2009 à 19:10:19  profilanswer
 

je pense à un truc là,
je sais pas si ça peut avoir un lien mais j'utilise un logiciel kdenlive qui me fait un truc semblable en ce moment, en gros c'est un soft pour faire du montage vidéo et quand je veux ajouter une vidéo il me dit que le clip (que je viens de sélectionner) est manquant
je sais pas si c'est une coïncidence...


---------------
dam's (debianer), ma galerie Flickr
mood
Publicité
Posté le 10-09-2009 à 19:10:19  profilanswer
 

n°1162586
dams78
développateur
Posté le 10-09-2009 à 19:14:10  profilanswer
 

un extrait de ce que me retourne un sh -x :


+ read LINE
+ wall[293]=/home/damien/wallpapers/soft/1548748147.jpg
scripts/bin/wallpaper.sh: 1: wall[293]=/home/damien/wallpapers/soft/1548748147.jpg: not found
+ cpt=294
+ read LINE


le compteur à l'aire de fonctionner, mais je comprend toujours pas l'erreur not found
 [:cid]


---------------
dam's (debianer), ma galerie Flickr
n°1162592
dams78
développateur
Posté le 10-09-2009 à 19:28:51  profilanswer
 

j'ai effectivement un lien vers dash
je viens de tester bash monscript et la boucle passe, je décommente le reste

 

je peux le remplacer le lien?

 

--edit

 

bon bah j'ai remplacer dash par un lien vers /bin/bash
et ça fonctionne

 

merci beaucoup (par contre mauvaise piste pour kdenlive, le problème doit venir d'ailleurs, je vais attendre une mise à jour)


Message édité par dams78 le 10-09-2009 à 19:32:15

---------------
dam's (debianer), ma galerie Flickr
n°1162597
M300A
Sehr hopfen, vielen IBU, wow!
Posté le 10-09-2009 à 19:42:13  profilanswer
 

alors, laisse ton lien sur dash (dpkg-reconfigure bash ou dash je crois pour configurer ça).
C'est ton script qui doit commencer par #!/bin/bash plutot.
 
Ensuite si tu veux le corriger, install le paquet checkbashism et lance le sur ton script. Ca te dira la ou tu as écris du bash et non du sh standard :)

n°1162599
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 10-09-2009 à 20:40:17  profilanswer
 

les basheries c'est le mal :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  bash, écrire dans un tableau

 

Sujets relatifs
Script bash : exécution de plusieurs scriptsEquivalent de 'chomp' sur bash
Scipt bash: formater la commande pour un psProblème commande bash
[bash] remplacer une chaine sed, perl ...[BASH] Utiliser le contenu d'une variable pour créer une variable?
Boucle en bash[bash] Remplacer un path dans un fichier par autre chose
[Make + Bash] @%$# de parentheses :)[Bash] mise a jour d'une variable (string) [FOU]
Plus de sujets relatifs à : bash, écrire dans un tableau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR