csh脚本foreach和符号链接

时间:2013-06-05 07:43:22

标签: linux foreach csh

我创建了以下test1.csh和test2.csh来调试link_grib.csh中的错误,这是一个来自名为WRF的气候模拟软件包的.csh脚本。

我在此Linux服务器上没有超级用户访问权限。提供的脚本对于同一服务器上的超级用户运行良好,因此不需要进行任何修改。

我从link_grib.csh中打破了两个简单的片段,一个涉及foreach,另一个涉及符号链接并说明了我看到的输出,请参阅下面的问题。

1) Test1.csh

#!/bin/csh
echo ${1}
foreach f ( ${1}* )
end

输出:

[frank@simunec1 20130604_mini]$ ls ./FNL.dat
./FNL.dat
[frank@simunec1 20130604_mini]$ test1.csh ./FNL.dat
./FNL.dat
foreach: No match. 

问题:为什么foreach会在这里没有回复?

2) Test2.csh

#!/bin/csh
ln -sf ./FNL.dat GRIBFILE.AAA

输出:

[frank@simunec1 20130604_mini]$ test2.csh
[frank@simunec1 20130604_mini]$ ls GRIBFILE.AAA
ls: cannot access GRIBFILE.AAA: No such file or directory  

// but running the same command outside of .csh script, everything is fine
[frank@simunec1 20130604_mini]$ ln -sf ./FNL.dat GRIBFILE.AAA
[frank@simunec1 20130604_mini]$ ls GRIBFILE.AAA
GRIBFILE.AAA

问题:为什么在.csh脚本之外运行相同的命令。

1 个答案:

答案 0 :(得分:2)

粗略猜测,你有一个.cshrc文件正在更改目录。

我尝试在shebang行(-f)中放置一个#!/bin/csh -f,或者使用csh -f <file>调用csh脚本。

您可以使用-X选项显示在启动脚本(.cshrc文件)中执行的命令,这些命令可以指向正确的方向。