O que há de errado com este arquivo csh?

2

Eu não tenho experiência em escrever arquivos .sh. Desejo executar o utilitário pvm2raw de este aplicativo do Biblioteca de volumes .

Eu recebo o seguinte erro ao executar o build.sh no Ubuntu 10.10.

build.shéoseguinte:

#makecommandsetmmfile=V3Makefilesetmake="make -f $mmfile"

set rule=$1
if ($rule == "") set rule="all" // line 16

if ($rule == "deps") then
   if ($HOSTTYPE == "iris4d") $make MAKEDEPEND="CC -M" OPTS="-DHAVE_CONFIG_H -DVIEWER_HAVE_DCMTK" TARGET=IRIX depend
   if ($HOSTTYPE == "i386") $make MAKEDEPEND="c++ -M -I/usr/X11R6/include" OPTS="-DHAVE_CONFIG_H -DVIEWER_HAVE_DCMTK" TARGET=LINUX depend

O que há de errado aí?

Edit: Eu segui o conselho do jw013 e instalei o csh. Agora recebo o seguinte erro:

Como posso resolver este problema de variável indefinida?

    
por andandandand 11.02.2012 / 05:55

1 resposta

14

O script é declarado como

#!/bin/csh -f

A sintaxe também corresponde à de csh . Você está executando como

sh build.sh

Como csh é compatível com Bourne nem POSIX sh , a incompatibilidade causa muitos erros de sintaxe. A maneira correta de executar build.sh é

csh build.sh

ou tornando-o executável ( chmod +x build.sh ) e executando-o diretamente, deixando o sistema escolher o interpretador correto de acordo com a linha shebang ( #! ):

./build.sh 

(assumindo que esteja em seu diretório atual).

A variável HOSTTYPE é definida apenas em tcsh , que é uma das implementações do csh. Se csh for alguma outra implementação do csh em sua máquina, certifique-se de instalar o tcsh e executar

tcsh build.sh

ou altere a primeira linha do script para #!/bin/tcsh -f .

    
por 11.02.2012 / 06:07