Execute um comando padrão no script bash

2

Estou escrevendo um script bash para automatizar várias ações:

#!/bin/bash         

echo "Hello, World"
NAME=""
PATH=""
echo $NAME
echo $PATH
eval "ls"

Vou chamar ls, ffmpeg e muitos outros comandos.

No entanto, executar meu script me dá o seguinte erro:

/var/www/html# ./life.sh test midhand.mp4
+ ./life.sh test midhand.mp4
Hello, World
test
midhand.mp4
./life.sh: line 9: ls: command not found

Como assim? porque não encontrado? Talvez eu deva importar um diretório com scripts?

    
por Vladimir Stazhilov 17.11.2014 / 17:37

2 respostas

8

A variável PATH é uma variável de shell especial. Ele define a lista de diretórios nos quais executáveis / comandos podem ser encontrados.

Na linha PATH="" , você apagou o valor padrão de PATH e agora o shell não sabe onde encontrar o comando ls . Por exemplo, ls pode ser encontrado no diretório /bin , mas você modificou PATH para ter o valor midhand.mp4 (o segundo argumento), em particular PATH não contém /bin e, portanto, seu shell não é possível encontrar o comando ls .

Tente isto:

#!/bin/bash

echo "Hello, World"
the_name=""
the_path=""

echo "PATH is '$PATH'"
echo $the_name
echo $the_path
eval "ls"

Observação. Você pode alterar a última linha de eval "ls" para apenas ls .

Você pode executar man bash para obter mais informações.

    
por edwin 17.11.2014 / 17:48
4

Você está recebendo esta mensagem de erro porque alterou a variável de ambiente PATH para um argumento de linha de comando ( ) que não preenche o binário real.

    
por Kannan Mohan 17.11.2014 / 17:50