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

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
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
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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Sous csh la syntaxe for n'est pas reconnue, il faut employer foreach ;-\
0
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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
0
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
montre un bout de fichier_fact
0
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
donc tu veux récupérer le texte entre le N° choisi et le suivant ou jusqu'à la fin du fichier ?
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
attention aux majuscule dans le No.
essayer
awk  -v n=$t '$1 ~ n {x=1} x {print}'   fichier_fact>nouv_fich
0
gnugo
 
Le set ligne=$< ça fait quoi ?
0
noureddine1967
 
salut,
Le set ligne=$< sert à introduire le numéro de la facture. C'est la première ligne à imprimer.
0