bash, écrire dans un tableau

bash, écrire dans un tableau - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 09-09-2009 à 19:10:42    

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
Reply

Marsh Posté le 09-09-2009 à 19:10:42   

Reply

Marsh Posté le 09-09-2009 à 22:34:28    

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
Reply

Marsh Posté le 09-09-2009 à 22:59:10    

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
Reply

Marsh Posté le 10-09-2009 à 07:51:11    

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
Reply

Marsh Posté le 10-09-2009 à 07:53:38    

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 !
Reply

Marsh Posté le 10-09-2009 à 16:38:45    

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
Reply

Marsh Posté le 10-09-2009 à 16:44:46    

et euh ...  

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


non ? :??:


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 10-09-2009 à 19:02:35    

ç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
Reply

Marsh Posté le 10-09-2009 à 19:10:16    

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

Reply

Marsh Posté le 10-09-2009 à 19:10:19    

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
Reply

Marsh Posté le 10-09-2009 à 19:10:19   

Reply

Marsh Posté le 10-09-2009 à 19:14:10    

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
Reply

Marsh Posté le 10-09-2009 à 19:28:51    

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
Reply

Marsh Posté le 10-09-2009 à 19:42:13    

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 :)

Reply

Marsh Posté le 10-09-2009 à 20:40:17    

les basheries c'est le mal :o


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

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed