菜鸟的foreach问题

菜鸟的foreach问题

我还从来没有使用过shell编程,只是因为实验室处理数据,我下载了一个脚本,用这个脚本可以很快的把所有数据一次处理完,我感觉我看懂了,然后打算按照我的数据编一个适合的脚本,没想到一开始就无法进行,请大家帮帮忙,我确实很菜的。

这是原脚本的一段

#-------------------------------------------------------
# put the other run data into 3D+time AFNI datasets

foreach run ( 2 3 4 )
    to3d -geomparent $topdir/afni/DDr1+orig -session $topdir/afni         \
         -prefix DDr${run} -save_outliers $outlier_dir/DDr${run}.outliers \
         -time:tz 110 27 2500 alt+z                                       \
         3Ds:0:0:64:64:1:"DDr${run}*"
end

我编了类似的一段以实现自动处理几个数据

mkdir outliers

foreach run ( 2 3 4 )
    to3d -prefix ${run} -save_outliers outliers/DDr${run}.outliers \
         -time:zt 30 102 3.6s seq+z ${run}.hdr

end

to3d是我们处理数据用的命令,我非常不解的是为什么我自己单独试运行我编的这段脚本就出错,出错信息是:

./script.txt: line 3: syntax error near unexpected token `('
./script.txt: line 3: `foreach run ( 2 3 4 )'

真的很困惑,真诚请教大家帮帮我,数据处理非常急!!      
看语法象是 C shell, Linux 默认都用 Bash 的      
[QUOTE=dearvoid]看语法象是 C shell, Linux 默认都用 Bash 的[/QUOTE]

斑竹说的极是!!!,我加了#!/bin/tcsh后问题就解决了。

:p

非常感谢!!

我想接着再请教一个问题,如果一个文件夹下有5个文件,我是否可以让这五个文件被自动读出,并成为脚本里面的变量?我的目的是让程序进入这个文件夹后自动依次读取这几个文件,然后做处理,最后再生成五个以filename_program方式命名的文件。

能行吗?请指点一下命令,最好是tcsh下能用的。      
i know little about c shell why c shell? bash is most popular in the world of linux.      
我下载的那个脚本是c shell的,我只想依葫芦画瓢

bash后csh相差大吗?      
如果没有特殊需要,还是用 bash 的好