0

次の test1.csh と test2.csh を作成して、link_grib.csh からのエラーをデバッグしました。これは、WRF と呼ばれる気候シミュレーション ソフトウェア パッケージからの .csh スクリプトです。

この Linux サーバーでのスーパーユーザー アクセス権がありません。提供されたスクリプトは、同じサーバー上のスーパーユーザーに対して正常に実行されるため、変更は必要ありません。

link_grib.csh から 2 つの単純なスニペットを取り出しました。1 つは foreach を含み、もう 1 つはシンボリック リンクを含み、表示されている出力を示しています。以下の質問を参照してください。

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 スクリプトの外部で同じコマンドを実行すると機能するのはなぜですか。

4

1 に答える 1

1

勝手な推測ですが、.cshrcディレクトリを変更しているファイルがあります。

-fシバン行 ( )に a を入れる#!/bin/csh -fか、 を使用して csh スクリプトを呼び出してみcsh -f <file>ます。

起動スクリプト (.cshrc ファイル) で実行されたコマンドを表示するオプションを使用する-Xと、正しい方向を示すことができます。

于 2013-06-05T10:50:00.600 に答える