Ошибка запуска скрипта:?#!/ Bin/csh: нет такого файла или каталога

Я пытаюсь запустить следующий скрипт, который запустит симуляцию с помощью программы симуляции климата:

#!/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 

Когда я пытаюсь запустить его, я получаю следующее сообщение об ошибке:

./most_plasim_run: line 1: ?#!/bin/csh: No such file or directory  
./most_plasim_run: line 5: syntax error near unexpected token `cd'  
./most_plasim_run: line 5: `if ($1 != "") cd $1'

Я озадачен этим сообщением об ошибке, потому что у меня действительно есть bin/csh. Я не знаю, где проблема.

2 ответа

Скорее всего, у вас есть один или несколько непечатаемых символов в начале скрипта, которые невидимы, когда вы смотрите на скрипт в редакторе (или через 'cat'), но не позволяете вызвать правильный интерпретатор csh. Остальные ошибки, вероятно, связаны только с тем, что система возвращается к оболочке по умолчанию (bash), в которой синтаксис похож на

if ($1 != "") cd $1

неверно и исчезнет, ​​как только вы исправите линию Шебанга, чтобы вызвать намеченную оболочку.

Я не уверен, что лучший способ удалить непечатные символы - вы можете попробовать что-то вроде

sed -i '1 s/^[^#]*//' most_plasim_run

который удалит все до первого символа # в строке 1 скрипта - или вы можете открыть новый пустой файл и вставить "чистую" строку Шебанга

#!/bin/csh

а затем скопируйте и вставьте оставшуюся часть сценария и повторно сохраните его.

Вы получаете эти ошибки, потому что у вас нет csh интерпретатор оболочки установлен. csh оболочка с C-подобным синтаксисом Чтобы установить его, выполните следующую команду в терминале:

sudo apt-get purge csh

В остальном скрипт выглядит нормально.

Другие вопросы по тегам