CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

encore un prob en bash :(

Darkman13
Darkman13
Niveau 10
04 décembre 2008 à 17:07:05

bonjour a tous :salut:

j'espère que vous pourrez encore m'aider :p)

voila je souhaite afficher 1 par 1 les paramètres du script param.sh :
(ça na apparemment pas beaucoup d'intérêt mais c'est pour simplifier le problème :ok: )

for i in $(seq 1 $#);
do
echo $i
done

donc bien sur ça m'affiche seulement 1, puis 2 et pas la valeur de $1 puis celle de $2 comme je le voudrais :(

si vous pouvez m'aider :snif:

chris_27
chris_27
Niveau 10
04 décembre 2008 à 17:48:41

Change $i en ${BASH_ARGV[$i]} :-)

Darkman13
Darkman13
Niveau 10
04 décembre 2008 à 17:50:29

merci ça marche sauf qu'il m'affiche les valeurs a l'inverse de la façon dont je les ai rentré :(

mais se n'est pas génant pour la suite du prog donc :merci: a toi

chris_27
chris_27
Niveau 10
04 décembre 2008 à 17:55:59

En effet, d'après le man, la variable BASH_ARGV ne stocke que les paramètres, et dans l'ordre inverse (dans l'ordre de la pile)... :honte:

Mais du coup, il faut que tu ailles de 0 à `expr $# - 1` non ?

Darkman13
Darkman13
Niveau 10
04 décembre 2008 à 18:03:02

oui effectivement :oui:

At0m3
At0m3
Niveau 8
04 décembre 2008 à 18:50:20

for i in $@; do echo $i; done;

$@ represente la liste des parametres de ta fonction.

chris_27
chris_27
Niveau 10
05 décembre 2008 à 01:21:17

En effet, c'était plus rapide. :-)

Darkman13
Darkman13
Niveau 10
06 décembre 2008 à 11:43:49

merci a vous 2 :) mais j'ai maintenant un autre problème :(

à cette ligne :d) if [ $sortie = "a" ] & [ ${tab[1]} = $1 ] & [ ${tab[2]} = $2 ]; then

il me sort :d) ./macompil.sh: line 42: [: = : opérateur unaire attendu
./macompil.sh: line 42: [: = : opérateur unaire attendu

ma fois, quand je remplace les "=" pas -e ou -eq évidemment il me met qu'il veut des opé binaire :sarcastic:

par contre si je remplace mon tableau par de simple variable ça marche :diable:
je précise que $1 et $2 contiennent le noms de fichiers.

voila la solution m'échappe et je traine se prob depuis un petit moment déjà donc je men remet à vous :snif:

chris_27
chris_27
Niveau 10
06 décembre 2008 à 13:03:33

Je vais te donner un conseil. La grammaire du shell est un peu subtile, donc met des espaces partout ( avant les ';', avant et après les '['/']', etc.). Et si tu fais un script, passe à la ligne souvent. :-)

Après, moi j'utiliserai && pour faire un & (un simple & ça ne fait pas vraiment un & logique, essaie "firefox & echo 2" dans un terminal)
Au passage, à l'intérieur d'un [ ], tu peux utiliser un '-a' pour faire un ET logique.

Ensuite, on utilise <,>,=,... pour des châines de caractères et -eq,-lt,-gt,... pour des nombres. Ici, il faut bien que tu utilises un = (ou == mais ce dernier ne semble pas être POSIX donc c'est moins bien). Mais il y a un problème avec les $truc. Si ton $truc est vide, tu vas avoir l'erreur que tu mentionnes :
[ $toto = "a" ] va être changé en [ = "a" ] une fois que $toto a été remplacé par sa valeur...
Manifestement, ce qui est à droite n'est pas syntaxiquement correct. Pour palier à ça, c'est simple, on fait :
[ "$toto" = "a" ] qui devient [ "" = "a" ].

Voilà. :-)

Darkman13
Darkman13
Niveau 10
06 décembre 2008 à 13:06:13

merci je testerais apres manger et je te tient au courant :p)

Darkman13
Darkman13
Niveau 10
06 décembre 2008 à 16:36:55

bon ça a l'air de marcher pour le moment, jusqu'au prochain problème :-(

:merci:

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment