Aspas duplas no bash

0

Estou tentando criar um arquivo bash que chama um programa que espera que um parâmetro seja enviado entre duas aspas duplas.

Veja o conteúdo do meu arquivo.

#!/bin/bash
echo ./yowsup/yowsup-cli demos --s $1 \"$2\" -c yowsup/config &
./yowsup/yowsup-cli demos --s $1 \"$2\" -c yowsup/config &

A parte de eco imprime exatamente o comando que eu preciso, mas quando eu vou executá-lo (próxima linha), eu estou bagunçando tudo.

Como posso resolver isso?

Obrigado!

É assim que eu preciso chamar:

./yowsup/yowsup-cli demos --s 9999999999 "my parameter" -c yowsup/config

Resultado do eco:

./yowsup/yowsup-cli demos --s 9999999999 "my parameter" -c yowsup/config

Resultado da chamada:

demos: error: unrecognized arguments: parameter

Copiando e colando resultados de eco:

INFO:yowsup.demos.sendclient.layer:Message sent
    
por Gilles 22.03.2015 / 13:30

2 respostas

4

Você precisa escapar as aspas no comando echo para vê-las na saída, mas você não deve escapar delas no comando real:

#!/bin/bash
echo ./yowsup/yowsup-cli demos --s $1 \"$2\" -c yowsup/config &
./yowsup/yowsup-cli demos --s $1 "$2" -c yowsup/config &

As aspas são usadas no comando real para impedir a divisão de $2 - que contém várias palavras.

    
por 22.03.2015 / 14:04
-1

Eu (quase) sempre cito tudo para "echo", então eu faria o seguinte acima:

#!/bin/bash
echo "./yowsup/yowsup-cli demos --s $1 \"$2\" -c yowsup/config &"
./yowsup/yowsup-cli demos --s $1 "$2" -c yowsup/config &

A diferença com a solução @muru é que lá o comando echo original é executado "em segundo plano" - aqui está ecoando para a tela em primeiro plano, mas executado como um comando em segundo plano. (@ muru também não mostra oe comercial no final do comando.)

    
por 30.01.2016 / 04:21