Bonjour,
Peux-tu déplacer ton post dans la section correspondante (si sous linux, il y a un forum dédier (shell et commande gnu), si sous unix en général, il y a aussi un forum shell et commande posix.
Sinon, en survolant un peu ton programme, quelques remarques:
- Le shebang (#!/bin/bash) doit-être obligatoirement sur la 1ère ligne.
- on voit à la fois une utilisation de expr et une utilisation de $((...)) qui est un peu la même chose...
- la syntaxe sur la valorisation de tes variables n'est pas je pense ce que tu veux, qui je pense est le résultats des commandes que tu passes, donc les 2 syntaxes possibles:
mot = sed -n "$nbligne" dico.dic
Doit s'écrire soit:
mot=$(sed -n "$nbligne" dico.dic)
ou
mot=`sed -n "$nbligne" dico.dic`
comme tu le remarquera, dans un premier temps, j'ai retiré les espaces autour du signe '=' car sinon, le shell considère ta variable comme une commande.
puis j'ai soit englobé ta commande de $(...) ou de backquote (`) qui sont les deux syntaxe pour dire au shell courant que c'est une commande à éxécuter dans un sous-shell.
Cas particulier, cette syntaxe est sous-entendu pour la forme $((...)) mais il ne faut toujours pas mettre d'espace autour du signe '=' pour signifie la valorisation d'une variable.
-Concernant l'erreur que tu rencontres, c'est l'inverse du signe '=', il faut un espace apres '[' et avant ']', donc while [ ... ] .
Après, je te conseilles d'aller dans la session tutoriel, pour compulser ceux concernant les shell...
Partager