2010-05-31 3 views
0

Je travaille avec C-Shell, je suis en train d'exécuter ce scripterreur dans le script csh

set callsTo = "`cut -d" " -f2 ${1}`" 
echo $callsTo 

coupé reçoit des données à partir du fichier qui est le premier paramètre:

> ./myscript data 

Je n'ai besoin que du deuxième champ de chaque rangée: -f2. Après cela, je veux vérifier si les données ont été stockées, mais je reçois ou une erreur inégalée. ou rangée vide. Quel est le problème avec mon script?

Aussi lorsque j'utilise #! /bin/tcsh -f je reçois ce message

tcsh [ -bcdefilmnqstvVxX ] [ argument ... ] 

Répondre

0

Je ne sais pas tcsh mais ne devrait pas cette ligne

set callsTo = "`cut -d" " -f2 ${1}`" 

être

set callsTo = `cut -d" " -f2 ${1}`? 

En bash Je l'aurais fait de cette façon:

callsTo=`cut -d' ' -f2 $1`? 

Espérons que cela aide.

+0

pas, malheureusement – lego69

+0

'appelspour = $ (cut -d » '-f2 "$ 1") 'en bash. '$()' est plus prévisible pour les utilisateurs et les nids, comparé aux backticks. Je ne connais pas l'équivalent de csh, mais le chercher pourrait aider. –

+0

csh n'a pas de syntaxe '$ (...)'; il a seulement des backticks. –

1

Les guillemets doubles ne s'emboîtent pas comme cela.

Essayez ceci:

set callsTo = "`cut -d' ' -f2 ${1}`" 

Aussi quand je suis en utilisant #!/Bin/tcsh -f Je reçois ce message

tcsh [-bcdefilmnqstvVxX] [arguments ...]

C'est étrange. Est-il possible qu'il y ait un caractère errant après le -f, peut-être un caractère '\r' d'une fin de ligne de style Windows? Quelle est la sortie de head -1 *foo*.tcsh | od -c?

0

set filename = echo ${1}|cut -f1 -d'#'
echo $ filename
Essayez cette

Questions connexes