como faço para definir aspas em torno de uma variável para que os programas as considerem como marcas de aspas

6

Eu estou tentando obter cotações em torno de uma variável para fazer é como eu digitei no terminal para fazer este script funcionar. mostra "aspas ao redor do varibal" mas ainda não vejo como citações, tanto quanto eu posso descobrir porque não funciona.

    hs='#'

echo ${hs}${hex}
echo  "\" #${hex} \""
echo  "\"#${hex}\""
#one way trying
hsetroot -solid "\"${hs}${hex}\""
#another way of trying
hsetroot -solid "\""${hs}${hex}"\""

De qualquer forma eu coloco os "qoutes" em torno da variável, como você pode ver, ambos vêm com aspas em ambos os lados, e ainda não funciona. No entanto, se eu digitar o "# 31064d" no terminal, colocando-o onde ele precisa estar, ele funciona. saída:

#31064d
" #31064d "
"#31064d"
Bad color ("#31064d") 
Bad color ("#31064d")

isso funciona, é um bom código de cor

userx@bw2-crunchbang:~/testscript$ hsetroot -solid "#31064d"

Como posso formatá-lo no script para que um programa que precise que o carrinho de bebê esteja entre aspas para vê-lo entre aspas?

Eu tentei escrever dessa maneira também.

echo "\""#${hex}"\""
hsetroot -solid "\"#${hex}\""

saída:

Bad color ("#12eba5")

você vê que as "aspas" ainda são adicionadas em torno dos números e das letras, como digitá-las no terminal, mas não consigo trabalhar.

Eu tentei as marcas '' e também, não vá.

    
por uxserx-bw 17.12.2013 / 01:57

3 respostas

5

Retire as aspas literais: elas estão causando o erro.

O shell usa as aspas para escapar de certos caracteres (o hash, neste caso, que de outra forma seria visto como o começo de um comentário), entre outras coisas. Quando o shell invoca outro comando e passa um argumento citado para ele, ele não inclui as aspas literais, elas são removidas.

Você só precisa disso:

hsetroot -solid "${hs}${hex}"
    
por 17.12.2013 / 02:16
1

Você está entendendo mal a função das cotações. O shell usa aspas duplas para dividir a linha de comando em "palavras" (que podem conter espaços em branco) e, em seguida, remove as aspas. Programas normalmente nunca vêem as aspas.

    
por 17.12.2013 / 07:35
-1

hsetroot -solid "#" $ {hex} "" é assim, como eu acabei de descobrir. não mais ajuda necessária esta é respondida que a sua. hora do café. - uxserx-bw 12 horas atrás aquele outro cara que escreveu. < < ---- que está na seção de comentários --- /

parece que pode funcionar também

"${hr}${hex}" 

enquanto eu fiz isso

 "#"${hex}""

em vez disso ---

    
por 17.12.2013 / 15:15