Como o @Archemar aponta corretamente, este é um script cshell, não deve ser executado no shell padrão do Linux.
Se no Debian:
apt-get install tcsh
E adicione como primeira linha do seu script:
#!/bin/tcsh
Estou seguindo um tutorial em microbiologia computacional:
Na página 10, há ex01.csh
que contém (recuo original sem recuo adicionado pelos participantes do StackExchange):
foreach f (tmp*)
echo $f
set zid = 'grep ZINC $f'
if !(-e "$zid".mol2) then
set filename = "$zid".mol2
else foreach n ('seq –w 1 99')
if !(-e "$zid"_"$n".mol2) then
set filename = "$zid"_"$n".mol2
break
endif
end
endif
mv –v $f $filename
end
Eu quero executar o comando acima. Eu tenho tentado descobrir isso nos últimos 2 dias, mas falhei. Toda vez, no primeiro passo, que é
foreach f (tmp*)
diz
bash : syntax near unexpected error '('
Eu sei zero sobre coisas do Linux, e estou apenas seguindo o que eu vejo no tutorial. Como posso resolver meu problema?
Como o @Archemar aponta corretamente, este é um script cshell, não deve ser executado no shell padrão do Linux.
Se no Debian:
apt-get install tcsh
E adicione como primeira linha do seu script:
#!/bin/tcsh
O tutorial que você cita está usando o csh
shell por completo, mas você está tentando executá-lo usando o bash
shell (é óbvio a partir da mensagem de erro que você obtém).
Os dois shells têm uma sintaxe muito diferente e não podem ser usados de forma intercambiável para executar um script. Pense neles como duas linguagens de programação separadas.
Certifique-se de que o script tenha #!/bin/csh
como sua primeira linha (e nada mais depois disso, vi um script no tutorial com um comentário imediatamente na mesma linha, o que está errado).
Verifique se o script é executável emitindo o comando chmod +x script.csh
(onde script.csh
é o nome do arquivo que contém o script).
Execute o script com ./script.csh
.
Alternativamente:
csh script.csh
. Obviamente, se csh
não estiver instalado em seu sistema, você terá que lidar com isso primeiro. Isso é feito de maneiras diferentes, dependendo do gerenciador de pacotes usado pelo seu Unix.
É bastante raro ver scripts de shell escritos para csh
hoje em dia, especialmente nos Unices gratuitos, depois que a maioria mudou sua configuração padrão para bash
, alguns ksh
-variant ou para algum outro sh
concha compatível.
Existe um texto escrito por Tom Christiansen (Perl guy) em 1994 que eu costumava ver referenciado com muito mais frequência há alguns anos, mas não com muita frequência hoje em dia (provavelmente porque muitos usuários simplesmente não sabem sobre o existência de algo diferente de um shell sh
-compatible). Ele tem o título " PROGRAMAÇÃO DA CSH CONSIDERADO NOCIVO ".