2013-06-05 2 views
0

Я создал следующие test1.csh и test2.csh для отладки ошибки из link_grib.csh, которая является скриптом .csh, который исходит из пакета программного обеспечения для моделирования климата под названием WRF.csh script 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 с помощью csh -f <file>.

Вы можете использовать опцию -X, которая отображает команды, выполняемые в сценариях запуска (файлы .cshrc), которые могут указывать на вас в правильном направлении.

+0

Это было именно так, спасибо за то, что указали это. – frank

Смежные вопросы