2010-05-31 56 views
0

我与C-shell中工作,我试图运行此脚本错误在csh脚本

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

切断从作为第一个参数的文件接收数据:

> ./myscript data 

我只需要每一行的第二个字段:-f2

之后,我想检查数据是否存储,但我收到或错误不匹配。或空行。我的脚本有什么问题?

此外,当我使用#! /bin/tcsh -f我收到此消息

tcsh [ -bcdefilmnqstvVxX ] [ argument ... ] 

回答

0

我不知道tcsh的,但不应该在该行

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

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

在bash我会这样做:

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

希望这会有所帮助。

+0

没有,'callsTo = $(切-d”'-f2 “$ 1”)'在bash不幸 – lego69 2010-05-31 10:11:06

+0

。与反引号相比,'$()'对用户和嵌套更具可预测性。我不知道等价的csh,但是寻找它可能会有所帮助。 – 2010-05-31 10:24:25

+0

csh没有'$(...)'语法;它只有反引号。 – 2011-08-25 14:25:07

1

双引号不像那样嵌套。

试试这个:

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

此外,当我使用#! /斌/ tcsh的-f我收到此消息

的tcsh [-bcdefilmnqstvVxX] [参数...]

这很奇怪。是否可能在-f之后有一个流浪字符,也许是从Windows风格的行结束的'\r'字符? head -1 *foo*.tcsh | od -c的输出是多少?

0

设置文件名= echo ${1}|cut -f1 -d'#'
回声$文件名
试试这个