为什么我只从这个脚本中获得一个数字?

时间:2010-06-01 20:04:38

标签: scripting csh tcsh

以下脚本中的错误是什么?

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

脚本rankHelper:

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

发送数据的文件lines

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

我使用以下方式运行:

> ./rank lines

为什么我只收到以下一个号码?

038280083

我认为cut必须从所有行中删除两个字段。我希望从行中的所有行看到第二个字段:

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

我正在研究C shell

1 个答案:

答案 0 :(得分:1)

我将rank更改为:

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

然后跑

> ./rank lines

它对我有用。

修改:如果由于某种原因(作业?)仍想使用rankHelper,请尝试在rankHelper命令中更改

cat $line

echo $line