Eu tenho uma linha de comando que gera uma linha de comando diferente, por exemplo:
> commandlineA param1 param2
commandlineB param1
Gostaria de ter uma única execução de linha de comando que executará commandlineB com o (s) parâmetro (s) fornecido (s).
Existe alguma maneira simples de fazer isso usando uma única linha de comando ou preciso executar um pequeno arquivo bash que armazene a saída em uma variável e execute-a?
obrigado
ubuntu
command-line
bash
Lior Ohana
fonte
fonte
Respostas:
Você parece ter resolvido isso sozinho, mas pode usar:
Edição de edição: o abaixo está um pouco errado, embora ele execute o comando em uma subshell, verifica-se que as variáveis de ambiente ainda estarão disponíveis. Desculpe por pessoas enganosas ...
Edit: que será executado em um subshell, quaisquer variáveis de ambiente não exportadas não serão usadas. Se você deseja executar um comando no mesmo shell, é necessário usar:
Outra resposta dada é canalizar através do próprio bash:
Isso também será executado em um subshell, para executar no mesmo shell que você precisará:
Aliás, você também pode usar ticks de retorno em vez da sintaxe $ (), mas isso não é recomendado .
fonte
eval
aqui. Se você tiver um motivo, explique-o. (3) Seu último exemplo (com-c
) está totalmente errado.Usa isto:
Exemplo:
Resultado:
fonte
$(commandlineA param1 param2)
printf '\143\144\040\057\n' | bash
é, no final das contas, um não operacional, porque o comando é executado em um novo processo de shell separado (e transitório). Por outro lado,$(printf '\143\144\040\057\n')
fará com que o shell interativo, ativo e atual mude de diretório.