Como substituir um comando pelo resultado de outro no linux?

0

Eu quero criar um comando que use o resultado de outro assim:

JNLP_FILE='find . -name viewerApplet.jnlp'
cp ${JAR_FILE} ../../sign-jar/$PROFILE/

Mas eu não sei como executar o comando find para usar o comando 'cp'.

Alguma ajuda?

    
por code-gijoe 07.03.2012 / 23:49

2 respostas

2

Você pode usar um sinal de dólar seguido pelo comando entre parênteses [ $(<command>) ] para que a saída desse comando seja alimentada diretamente na linha de comando:

cp $(find . -name viewerApplet.jnlp) ../../sign-jar/$PROFILE/

Alternativamente, você pode usar backticks ('):
cp 'find . -name viewerApplet.jnlp' ../../sign-jar/$PROFILE/
    
por 07.03.2012 / 23:57
2
find . -name viewerApplet.jnlp -exec cp {} ../../sign-jar/$PROFILE/ \;

-exec permite-lhe alimentar os resultados da pesquisa para outro comando. {} é o nome do arquivo encontrado. Note que se o find tiver mais de um resultado, ele irá copiá-los para o diretório especificado (presumivelmente você tem apenas 1 arquivo chamado viewerApplet.jnlp, mas o exec também funciona para coisas como find . -name *.java -exec cp {} backups/ \; )

    
por 08.03.2012 / 00:11