2013-06-05 100 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