Como fazer o eco de um comando e executá-lo?

2

Como imprimir um comando (echo) e executá-lo em um único comando?

Isto é útil quando você tem algum alias / função e quer imprimir o que o comando é antes de executar o comando.

Isso seria o equivalente de

alias mi='echo mvn install; mvn install'

A idéia é evitar a repetição do comando (aqui 'mvn install' é escrito duas vezes)

Algo como:

alias echoAndRun='...'
alias mi='echoAndRun mvn install'

Obrigado pela sua ajuda.

    
por Tom 24.04.2012 / 08:52

2 respostas

3

A maneira mais fácil de fazer o que você está pedindo provavelmente é set -x para ativar o rastreamento de comandos. Lembre-se de desligá-lo depois.

function showAndTell {
    set -x
    "$@"
    set +x
}

(Note que aliases de shell raramente são o que você quer, exceto em csh derivatives onde eles podem simular funções até certo ponto porque funções de shell reais não existem.)

Dada a função acima, você também poderia simplesmente echo "$@" dentro da função; Se você quiser modificar como ele exibe o que será executado, você precisará fazer isso dessa maneira.

    
por 24.04.2012 / 09:05
1

Você pode usar

set -x

antes de os comandos serem dados.

    
por 24.04.2012 / 08:56

Tags