2013-06-05 259 views
0

我创建了以下test1.csh和test2.csh以调试来自link_grib.csh的错误,该错误是来自名为WRF的气候模拟软件包的.csh脚本。csh脚本foreach和符号链接

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

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

1) Test1.csh

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

输出:

[[email protected] 20130604_mini]$ ls ./FNL.dat 
./FNL.dat 
[[email protected] 20130604_mini]$ test1.csh ./FNL.dat 
./FNL.dat 
foreach: No match. 

问:为什么会在这里的foreach回报不匹配?

2) Test2.csh

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

输出:

[[email protected] 20130604_mini]$ test2.csh 
[[email protected] 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 
[[email protected] 20130604_mini]$ ln -sf ./FNL.dat GRIBFILE.AAA 
[[email protected] 20130604_mini]$ ls GRIBFILE.AAA 
GRIBFILE.AAA 

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

回答

2

疯狂猜测,你有一个.cshrc文件正在改变目录。

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

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

+0

就是这样,非常感谢您指出了这一点。 – frank