Você não pode expandir variáveis entre aspas simples. Você pode finalizar aspas simples e iniciar aspas duplas:
echo 'visit:"'"$site"'"'
Você também pode inserir aspas duplas entre aspas duplas:
echo "visit:\"$site\""
Considere que eu configurei a variável site
e precisa ser impressa por echo
ou printf
, mas se eu usar aspas simples para escrever algo e quiser usar a variável, então como?
Exemplo:
$ site=unix.stackexchange.com
$ echo "visit:$site"
visit:unix.stackexchange.com
Mas se eu usar aspas simples:
$ echo 'visit:$site'
visit:$site
Então sabemos que ''
é uma cotação strong e não expandirá a variável
Eu tentei algo:
$ echo 'visit:"$site"'
visit:"$site"
mas não consegue. Então, eu estou procurando maneira de imprimir valor dentro da variável ao usar aspas simples .
Você não pode expandir variáveis entre aspas simples. Você pode finalizar aspas simples e iniciar aspas duplas:
echo 'visit:"'"$site"'"'
Você também pode inserir aspas duplas entre aspas duplas:
echo "visit:\"$site\""
Ao lidar com a impressão de conteúdo variável, você deve ficar com printf em vez de echo :
printf 'visit:%s\n' "$site"
produzirá visit:
, seguido pelo conteúdo de $site
e uma nova linha, independentemente dos caracteres em $site
.
choroba está correta.
Embora se isso fosse algum tipo de enigma, eu responderia com isso:
cat << EOF | sh
> echo 'visit:$site'
> EOF
Como aponta jander, isso está bem aberto para um ataque de injeção. Não foi uma resposta séria, por isso, se alguém estava pensando em usar algo assim, não use com entrada não confiável. Por exemplo, valide a string $site
como sendo uma URL válida antes de executar cegamente o conteúdo. Algo como isso poderia ajudar (mas a expressão fornecida não é perfeita porque ainda permite injeção, mas use esse tipo de mecânico para testá-lo).
Se eu entendi seu pedido corretamente, você pode avaliar a string ecoada. Por exemplo:
# eval echo 'visit:$site'
visit:unix.stackexchange.com