Como atribuir. * como um valor para a variável no bash [duplicado]

0

Quando eu estou atribuindo. * a uma variável, ela está atribuindo todos os arquivos ocultos.

[root@s1 ~]# a=".*"
[root@s1 ~]# echo $a
. .. .bash_history .bash_logout .bash_profile .bashrc .cache .config .cshrc .history .lesshst .mozilla .pki .rnd .ssh .tcshrc .viminfo .virsh .xauth6SHzeY .xauthhAVYfm .xauthI6Cte3 .xauthk7ea35 .xauthlXtiZ9 .Xauthority .xauthQm7mJ8 .xauthTpWbxP .xauthY9KsdC

Espero abaixo da saída:

.*

Como escapar, obrigado.

Eu tentei abaixo e dá saída

 [root@s1 ~]# a='".*"'
    [root@s1 ~]# echo $a
    ".*"

".*"

mas não

.*

    
por Bharat 10.08.2018 / 15:28

2 respostas

6

Você não está fazendo nada errado na atribuição da string .* à variável, mas desde que você use a variável sem aspas com echo , o shell executará (geração de palavras e) geração de nome de arquivo (globbing) em sua valor antes de chamar echo .

Para evitar isso, aspas duplas na expansão da variável:

echo "$a"

Relacionados:

por 10.08.2018 / 15:34
6

Como você precisa ligar:

echo ".*"

para não expandir isso, você também precisa ligar:

a=".*"
echo "$a"
    
por 10.08.2018 / 15:32

Tags