O script de shell não está executando

4

Não tenho certeza do que está acontecendo.

Deixa o script de chamada a.sh com o seguinte

/users/guru$ cat a.sh
#! /usr/bin/ksh

echo "Hello"
date

Execute com ksh . Isso é feito.

/users/guru$ ksh a.sh
Hello
Tue Jul 15 15:00:52 EDT 2014

Garanta a permissão de arquivo e ksh caminho.

/users/guru$ ls -l a.sh
-rwxrwxrwx    1 guru  kpc         35 Jul 15 15:00 a.sh
/users/guru$ a.sh
ksh: a.sh:  not found
/users/guru$ which ksh
/usr/bin/ksh
    
por Guru 15.07.2014 / 21:17

3 respostas

8

Experimente "./a.sh" ao tentar executá-lo. Ele precisa saber onde o arquivo está.

O './' diz para procurar no diretório atual.

    
por 15.07.2014 / 21:18
4

Quando você digita um comando, o shell procura o comando em uma lista de diretórios, conforme especificado pela variável PATH .

O diretório atual não está em PATH por padrão (por motivo de segurança), então o shell não pode encontrar seu script.

Usando ./ , ou seja, o diretório atual, para que o shell saiba onde está seu script.

    
por 15.07.2014 / 21:23
1

Como eu postei na outra pergunta, às vezes é possível obter o erro de arquivo não encontrado mesmo quando você executa o script como ./scriptname . Como já publiquei na outra resposta , você pode testá-lo em sua máquina.

Teste

cat ksh_experiment.ksh

#!/usr/bin/ksh
echo "Hello"

Agora, depois de fornecer as permissões quando executei o arquivo, ele gerou a saída com êxito. Agora, conforme discutido acima aqui , inseri alguns retornos de carro no meu arquivo. Agora, quando eu executei o script, recebi a saída como

ksh: ./ksh_experiment.ksh: not found [No such file or directory]

Agora, cat -v ksh_experiment.ksh também produziu a mesma saída. Além disso, se eu digitasse vim ksh_experiment.ksh , um novo arquivo estava sendo aberto.

Como discutido na resposta do link que eu forneci, removi os retornos de carro usando o comando

 perl -p -i -e "s/\r//g" ksh_experiment.ksh

Depois de consertar quando corri, recebi a saída como esperado.

Agora, você também pode usar dos2unix para converter o arquivo.

    
por 15.07.2014 / 21:27