Erro ao executar um script:? #! / bin / csh: Nenhum arquivo ou diretório

0

Estou tentando executar o script a seguir, que iniciará uma simulação com um programa de simulação climática:

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

Quando tento executá-lo, recebo a seguinte mensagem de erro:

./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'

Estou confuso com essa mensagem de erro porque, de fato, tenho bin / csh. Eu não sei onde está o problema.

    
por Laskaris 28.07.2013 / 17:57

2 respostas

2

Você provavelmente tem um ou mais caracteres não imprimíveis no início do script, que são invisíveis quando você olha para o script em um editor (ou via 'cat'), mas estão impedindo que o interpretador csh correto seja invocado . Os erros remanescentes provavelmente são apenas porque o sistema está retornando ao shell padrão (bash) no qual a sintaxe

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

está incorreto e desaparecerá quando você corrigir a linha shebang para que o shell desejado seja chamado.

Não tenho certeza da melhor maneira de remover caracteres não imprimíveis - você pode tentar algo como

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

que excluirá qualquer coisa até o primeiro caractere # na linha 1 do script - ou você poderá abrir um novo arquivo vazio e inserir uma linha shebang 'limpa'

#!/bin/csh

e copie e cole o restante do script e salve-o novamente.

    
por steeldriver 28.07.2013 / 19:23
1

Você obtém esses erros porque você não tem o interpretador csh shell instalado. csh é um shell com sintaxe semelhante a C. Para instalá-lo, execute o próximo comando no terminal :

sudo apt-get purge csh

No restante, o script parece ok.

    
por Radu Rădeanu 28.07.2013 / 18:34