Por que não estraga !! trabalhar de forma não interativa?

1

Se eu fizer isso em um shell, posso ver que a variável !! bash contém o último comando.

$> echo foo
foo
$> echo !!
echo echo foo
echo foo

Mas este script

#!/bin/bash

mkdir /path/doesnt/exist ||
{
    echo "Could not !!";
    exit 1;
}

saídas

mkdir: cannot create directory ‘/path/doesnt/exist’: No such file or directory
Could not !!

Eu esperava que a saída fosse Could not mkdir /path/doesnt/exist

Por que isso não funciona e como posso corrigi-lo?

    
por spraff 05.12.2016 / 15:28

1 resposta

2

Porque !! é um comando que lê o histórico bash e o bash history é usado apenas no modo interativo.

Realmente, você não quer que cada script preencha seu histórico de comandos.

Do manual do bash, seção "EXPANSÃO DA HISTÓRIA"

Non-interactive shells do not perform history expansion by default.

    
por 05.12.2016 / 15:30