Escrevendo meu primeiro script bash (linha 2: testscript: Nenhum arquivo ou diretório)

0

Estou tentando escrever meu primeiro script de shell (estou executando o Ubuntu 10.x)

Isto é o que o meu 'script' parece

cd /some/path/to/scripts
# pwd (if uncommented, this shows we HAVE really changed directory to /some/path/to/scripts
# echo 'ls'  (if uncommented, shows that testscript is in our working directory)
# the next line is where bash LIES:  'testscript: No such file or directory' 
. testscript # (./testscript doesn't work either)

Eu coloquei as seguintes instruções de depuração (depois do cd), no script acima, para ter certeza de que tudo estava bem:

pwd
echo 'ls -lhrt'

e exibiu todos os arquivos no diretório. Então, eu não entendo a mensagem de erro que estou recebendo.

[Editar]

Eu mudei minha pergunta - para focar na questão principal de porque estou recebendo a mensagem de erro 'Não há arquivo ou diretório'.

Aqui estão os fatos:

  • o testscript é executável e reside em / some / path / to / scripts
  • quando eu digito manualmente os comandos no script acima, o script de teste é executado com êxito

Minha pergunta é:

Como é que esses mesmos comandos (triviais) funcionam na linha de comando e, no entanto, deixam de funcionar quando executados a partir de um script em lote?

Igualmente (se não mais importante), é a questão - como faço para corrigir isso?

Coloque simplesmente quero escrever um script que faça isso:

  1. Altere o diretório para um diretório especificado (codificado)
  2. Executar um script no diretório de trabalho atual
por skyeagle 14.01.2011 / 10:22

1 resposta

1

O shebang está apontando para o local errado para o interpretador, deve ser o caminho absoluto, que (desde que você queira usar o bash para o script) é mais provável:

#!/bin/bash

O propósito do shebang é declarar explicitamente o interpretador com o qual o script deve ser executado. Se você não especificar um interpretador, ele será executado em qualquer interpretador que esteja sendo executado no momento em que for executado.

edit: Eu só notei que você tem outro erro listado em seu título. Isso provavelmente é porque você está usando . testscript , que provavelmente é ./testscript (se você estiver tentando executá-lo). Certifique-se de ter feito chmod +x para tornar o script executável ou ele falhará.

    
por 14.01.2011 / 10:33