2010-06-01 2 views
0

Quel est le bogue dans le script suivant?Pourquoi ne puis-je obtenir qu'un seul numéro de ce script?

#! /bin/tcsh -f 
cut -d" " -f2 ${1} | ./rankHelper 

Script rankHelper:

#! /bin/tcsh -f 
set line = ($<) 
while(${#line} != 0) 
cat $line 
set line = ($<) 
end 

Fichier lines à partir de laquelle les données ont été envoyées:

053-3787837 038280083 
052-3436363
053-3232287 038280083 
054-3923898 033333333 
052-2222333
052-1111111

Je cours à l'aide:

> ./rank lines 

Pourquoi est-ce que je reçois seulement le nu suivant mber? Je pensais que cut doit couper deux champs de toutes les lignes. Je me attends à voir le deuxième champ de toutes les lignes des lignes:

dos2unix: converting file rank to UNIX format ... 
> ./rank lines 
> 

> cat -A rank 
#! /bin/tcsh -f$ 
cut -d" " -f2 ${1} | ./rankHelper 


> cat -A rankHelper 
#! /bin/tcsh -f$ 
set line = ($<)$ 
$ 
$ 
while(${#line} != 0)$ 
$ 
echo $line$ 
set line = ($<)$ 
end 

Je travaille sur C shell.

+0

Merci pour les détails, mais Il vous manque un élément important: Qu'avez-vous * espérer * obtenir par la suite? Qu'est-ce que vous avez montré est exactement ce que je m'attendais à couper avec '-f2'. –

+0

'couper' doit couper 2 champs de toutes les rangs, oui? – lego69

+0

Il s'attend à obtenir le deuxième champ de chaque rangée, je crois. –

Répondre

1

j'ai changé rank à ceci:

#! /bin/tcsh -f 
cut -d" " -f2 ${1} 

et couru

> ./rank lines 

et cela a fonctionné pour moi.

Edit: Si vous voulez continuer à utiliser rankHelper pour une raison quelconque (? Devoirs), essayez de changer, en rankHelper la commande

cat $line 

à

echo $line 
+0

Vous avez essayé de faire, ce que j'ai fait? Vous avez le même résultat? – lego69

+0

J'ai fait la même chose que vous, il ne peut pas me donner même la première rangée :( – lego69

+0

@ lego69 quelle sortie a-t-il donné? Est-ce que ça a fini ou non? A-t-il donné une erreur? –

Questions connexes