Pular para o conteúdo

Escapar variavel dentro de aspas simples

Responder tópico
  • Denunciar
  • Indicar

1. Escapar variavel dentro de aspas simples

Enviado em 25/01/2011 - 19:06h

Pessoal, boa noite!

Tenho um shellscript (trecho abaixo) que adiciona impressoras no meu CUPS/SAMBA automaticamente... O problema é que quando passo a variável $NOME_IMPRESSORA que vai "dentro" de um comando (smbclient) com aspas simples, ela é escrita literalmente e não a variavel traduzida.

Não adianta colocar entre "" ou escapar que não vai... Alguma luz?

Segue trecho do script:

echo "Qual o nome da Impressora(EXATAMENTE como criado no CUPS)?"
read NOME_IMPRESSORA
echo "O nome desejado é $NOME_IMPRESSORA? [S/N]"
read RESPOSTA
if [ $RESPOSTA == S ]; then
echo "\nCopiando drivers para compartilhamento...\n\n"
sleep 1
smbclient //localhost/print$ -U root -c 'put /usr/share/cups/drivers/cups6.ini W32X86/cups6.ini;put /usr/share/cups/drivers/cupsps6.dll W32X86/cupsps6.dll;put /usr/share/cups/drivers/cupsui6.dll W32X86/cupsui6.dll;put /usr/share/cups/drivers/$NOME_IMPRESSORA.ppd W32X86/$NOME_IMPRESSORA.ppd'

Responder tópico

2. Re: Escapar variavel dentro de aspas simples

Enviado em 25/01/2011 - 20:31h

não sei se vc percebeu, mas vc está usando essas aspas ' ' fechando todo o parametro a ser passado, ou seja, essas aspas le os caracteres como eles são e não oq representa, nesse caso $NOME_IMPRESSORA é somente $NOME_IMPRESSORA e não oq essa variavel representa

tenta assim

smbclient //localhost/print$ -U root -c "put /usr/share/cups/drivers/cups6.ini W32X86/cups6.ini;put /usr/share/cups/drivers/cupsps6.dll W32X86/cupsps6.dll;put /usr/share/cups/drivers/cupsui6.dll W32X86/cupsui6.dll;put /usr/share/cups/drivers/$NOME_IMPRESSORA.ppd W32X86/$NOME_IMPRESSORA.ppd"

3. Re: Escapar variavel dentro de aspas simples

Enviado em 15/08/2016 - 03:22h

Obrigado por ter postado a solução ! Me ajudou muito

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder