Por que você deve ter cuidado ao usar a função de histórico de comandos internos do Bash para executar novamente os comandos anteriores que contêm variáveis?

0

Eu sei que !! re-executa comandos, mas o que exatamente ocorreria se eu re-executasse um comando que tivesse uma variável no comando?

    
por linux8807 04.10.2013 / 20:54

2 respostas

5

Bem, vamos tentar:

$ foo=bar
$ echo $foo
bar
$ foo=qux
$ !-2
echo $foo
qux
$ history
...
  219  foo=bar
  220  echo $foo
  221  foo=qux
  222  echo $foo
  223  history

Portanto, parece que o comando é adicionado ao histórico antes que a expansão da variável ocorra.

    
por 04.10.2013 / 21:37
0

Parece que algumas tentativas e erros podem ser úteis e fornecer um resultado muito rápido para você. Antes de fazer uma pergunta, é bom tentar essas coisas sozinho. Como resultado, você pode fazer perguntas informadas e detalhadas :)

Como parece que você é novato nisso, talvez o seguinte seja benéfico para você?

$ history -c
$ FOOD="Bananas"
$ echo $FOOD
Bananas
$ history
  137  FOOD="Bananas"
  138  echo $FOOD
  139  history
$ !138
echo $FOOD
Bananas

Como você pode ver, o comando history funcionou conforme o esperado. Ao executar 138, executamos exatamente o mesmo comando que fizemos na primeira vez que o executamos.

Dica Pro: use o comando man para ler mais sobre um comando que você está curioso sobre. Ex:

man history

e digite Q para sair quando tiver terminado.

Felicidades!

    
por 05.10.2013 / 03:13