Erro: comando não encontrado

0

Eu estou recebendo este erro de alguma forma .. ainda não consigo descobrir sozinho:

este é o meu script:

#!/bin/bash
if (( $# != 4 )); then 
    echo wrong parametrs
    echo 1
fi
if [[ ! -f $2 ]];then
    echo file 2 doesnt exist
    exit 1;
fi

$2 < $3 > $1 #line 11
if  diff $4 $1 > /dev/null; then
    echo InOut V
    exit 0
else
    echo InOut X
    exit 1
fi

e eu tento executá-lo assim:

./test file.log myecho echo.in echo.out

e diz: line 11: command: myecho : not found

    
por Sijaan Hallak 02.04.2016 / 13:27

2 respostas

3

Eu não entendo o que você está tentando fazer aqui, mas o problema é que você está tentando executar myecho como um programa. Vamos dar uma olhada na linha relevante:

$2 < $3 > $1

Aqui, $2 é myecho , $3 é echo.in e $1 é file.log . Portanto, o que você está executando é:

myecho < echo.in > file.log

Com base na saída do seu script, você tem um arquivo chamado myecho no diretório atual (caso contrário, o script teria reclamado sobre o arquivo 2 não existente). No entanto, seu diretório atual aparentemente não está em sua $PATH . Portanto, quando você tenta executar myecho , o sistema procura por um executável com esse nome nos diretórios em seu $PATH , não encontra um e reclama.

A solução mais simples é chamar ./$2 em vez de $2 , o que diz ao seu shell para executar o arquivo chamado myecho no diretório atual e não procurá-lo naqueles em $PATH .

Como alternativa, você pode adicionar seu diretório atual ao seu $PATH . Adicione esta linha ao seu ~/.profile :

PATH="$PATH:"

O trailing : adiciona seu diretório atual (o que quer que seja) ao seu $PATH . Você terá que efetuar logout e login novamente ou manualmente originar .profile ( . ~/.profile ) para que as alterações entrem em vigor. Observe que isso pode ser perigoso em alguns casos em que, por exemplo, um invasor carregou um executável malicioso em seu diretório atual e o nomeou ls .

    
por 02.04.2016 / 13:59
2

Na linha 11, você está executando o comando $2 .
$2 avalia o segundo argumento dado ao script, que é myecho no seu caso.

A partir da mensagem de erro, você pode dizer que o seu shell não pode encontrar um comando chamado myecho . Ele pode não estar instalado ou, no caso de um comando personalizado como este, pode estar no diretório errado (fora dos que estão em $PATH ) ou não estar marcado como executável ( chmod +x ).

    
por 02.04.2016 / 13:53

Tags