0

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

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

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

1) 测试1.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 脚本之外运行相同的命令有效。

4

1 回答 1

1

大胆猜测,您有一个.cshrc正在更改目录的文件。

我会尝试-f在 shebang 行 ( #!/bin/csh -f) 中添加一个,或者使用csh -f <file>.

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

于 2013-06-05T10:50:00.600 回答