Precisamos avaliar uma string para executá-la como um comando?

1

Em Python, se uma string representar uma declaração, para executá-la, temos que usar eval .

No Bash, por que não é o mesmo caso?

$ cmd="ls"
$ $cmd
 a.out  company.png
    
por Ben 20.11.2018 / 20:54

1 resposta

3

Python e Bash são linguagens totalmente diferentes. O principal objetivo do Python é executar instruções internas com a capacidade adicional de executar programas externos. O principal objetivo do shell é executar programas externos, com algumas estruturas de controle e comandos internos adicionados. O Bash tem mais recursos internos do que o shell original, mas ainda mantém a compatibilidade.

Um dos recursos do shell é que você pode definir variáveis e expandi-las posteriormente em comandos. Basicamente, você pode pensar que o shell usa implicitamente algo como eval do Python para cada instrução, embora haja diferenças, é claro.

Há também um comando eval no shell que pode ser útil e perigoso se o nível normal de processamento e substituição não for suficiente e você precisar de um nível adicional. Ele avalia o restante da linha e alimenta o resultado para as substituições normais que o shell executa. Até que você tenha uma melhor compreensão e uma real necessidade disso, é melhor esquecer esse recurso.

    
por 20.11.2018 / 21:13

Tags