Problème de variable entree

noureddine1967 -  
noureddine1967 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je travaille dans une société à vocation commerciale et je suis chargé de l'édition des factures sous AIX 5.1. En cas de bourrage de papier je suis obligé de procéder, avec les commandes grep et AWK à créer un fichier pour la suite de l'impression.

J'ai crée un bash et son exécution

#! /bin/sh
clear
set t=' '
echo -n "Entrez le numero de la facture ->> "
set t=$<

for j in 'grep -n "$t" fichier_fact |awk '{print $1}''
do
awk 'NR>="$j" {print}' fichier_fact>nouv_fich
done

il s'affiche le message suivant:

-n Entrez le numero de la facture ->>
bour[5]: 0403-057 Erreur de syntaxe à la ligne 6 : 'newline or ;' inattendu.

Merci par avance pour votre aide

3 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    J'ai crée un bash et son exécution
    Si l'on en croit la syntaxe employée, ce n'est pas du bash, mais du "csh" ;-\

    Ton shebang indique "#! /bin/sh", est-ce que /bin/sh" est bien un lien symbolique vers "/bin/csh" ?

    0
    1. noureddine1967 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
       
      Salut,
      Je viens de changer en "/bin/csh"
      voila le message d'erreur qui s'affiche

      Entrez le numéro de la facture ->> NNNNNNNNNNNN
      for: Commande introuvable.
      do: Commande introuvable.
      done: Commande introuvable.
      /home/users/edition/sgc/imp>
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Sous csh la syntaxe for n'est pas reconnue, il faut employer foreach ;-\
      0
    3. noureddine1967 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
       
      Salut,
      A vrai dire, je ne vois pas comment utiliser foreach, pouvez vous m'aider ??
      Merci
      0
    4. noureddine1967 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
       
      Salut,
      J'ai changé de script et voici le message d'erreur

      ! /bin/csh
      clear
      echo -n "Entrez le numero de la facture ->> "
      set ligne=$<

      j='grep -n "$ligne" fichier_fact | awk '{print $1}''
      awk 'NR>="$j" {print}' fichier_fact>nouv_fichier

      Entrez le numero de la facture ->> nnnnnnnnnn
      j=50041:: Commande introuvable.
      /home/users/edition/
      0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    montre un bout de fichier_fact
    0
    1. noureddine1967 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
       
      Salut,

      Voici à quoi ressemble le fichier factures

      22A120707805 <----C'est le numéro de la facture
      (Détail de la facture)

      22A120707806
      (Détail de la facture)

      22A120707807
      (Détail de la facture)
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      donc tu veux récupérer le texte entre le N° choisi et le suivant ou jusqu'à la fin du fichier ?
      0
    3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      essayer ça
      #!/bin/csh
      clear
      set t=' '
      echo  "Entrez le numero de la facture ->> \c"
      set t=$<
      awk '$1==n {x=1} x {print}' n=$t   fichier_fact>nouv_fich
      
      0
    4. noureddine1967 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
       
      Salut,
      En effet, je veux récupérer le texte du numéro saisi de la facture jusqu'à la fin.
      J'ai essayé ton script, mais le nouv_fich est vide.
      0
    5. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      attention aux majuscule dans le No.
      essayer
      awk  -v n=$t '$1 ~ n {x=1} x {print}'   fichier_fact>nouv_fich
      0
  3. gnugo
     
    Le set ligne=$< ça fait quoi ?
    0
    1. noureddine1967
       
      salut,
      Le set ligne=$< sert à introduire le numéro de la facture. C'est la première ligne à imprimer.
      0