Я пытаюсь запустить следующий скрипт, который запустит симуляцию с помощью программы симуляции климата:
#!/bin/csh
# run-script generated by Most Tue Jul 23 13:10:46 2013
set EXP=MOST # Name your experiment here
unset noclobber
if ($1 != "") cd $1
# rm -f plasim_restart
cp MOST_REST.010 plasim_restart
rm -f Abort_Message
set YEAR = 10
set YEARS = 50
while ($YEAR < $YEARS)
set YEAR = `expr $YEAR + 1`
set DATANAME=`printf '%s.%03d' $EXP $YEAR`
set DIAGNAME=`printf '%s_DIAG.%03d' $EXP $YEAR`
set RESTNAME=`printf '%s_REST.%03d' $EXP $YEAR`
./most_plasim_t42_l10_p1.x >${DIAGNAME}
if (-e Abort_Message) exit 1
if (-e puma_output) mv puma_output $DATANAME
if (-e puma_diag ) mv puma_diag $DIAGNAME
cp plasim_status plasim_restart
mv plasim_status $RESTNAME
end
Когда я пытаюсь ее запустить, я получаю следующее сообщение об ошибке:
[ 111]Я озадачен этим сообщением об ошибке, потому что у меня фактически есть bin / csh. Я не знаю, где проблема.
Вы получаете эти ошибки, потому что у вас не установлен csh
интерпретатор оболочки. csh
является оболочкой с C-подобным синтаксисом. Чтобы установить его, выполните следующую команду в терминале :
sudo apt-get purge csh
В остальном скрипт выглядит нормально.
Скорее всего, у вас есть один или несколько непечатаемых символов в начале скрипта, которые невидимы, когда вы смотрите на скрипт в редакторе (или через 'cat'), но не позволяете вызвать правильный интерпретатор csh. , Остальные ошибки, вероятно, связаны только с тем, что система возвращается к оболочке по умолчанию (bash), в которой синтаксис, такой как
if ($1 != "") cd $1
, неверен и исчезнет, как только вы исправите строку shebang, так что предполагаемая оболочка будет вызывается.
Я не уверен, что лучший способ удалить непечатаемые символы - вы можете попробовать что-то вроде
sed -i '1 s/^[^#]*//' most_plasim_run
, которое удалит что-либо до первого # символа в строке 1 сценарий - или вы можете открыть новый пустой файл и вставить «чистую» строку Шебанга
#!/bin/csh
, а затем скопировать и вставить оставшуюся часть сценария и повторно сохранить его.