Por que nada é mostrado da expansão de variáveis?

0

Por que nada sai do $ IFS quando:

$ echo $IFS

enquanto

$ printf '%q\n' "$IFS"
$' \t\n'

$ echo "$IFS" | od -bc
0000000 040 011 012 012
             \t  \n  \n
0000004
    
por Tim 28.04.2016 / 19:40

1 resposta

5

Em:

echo $IFS

você não duplicou a variável de citação, o conteúdo da variável sob efeito do operador glob + split em todos os shells parecidos com Bourne, exceto zsh :

echo glob(split($IFS))

Os caracteres em IFS em si são usados para divisão, então $IFS expandido para nada, você só tem uma linha vazia de echo .

Quando você dá aspas duplas em "$IFS" , o conteúdo de IFS foi passado para eco como está, você tem um espaço, uma guia e uma nova linha, que são os valores padrão de IFS .

A diretiva

%q do comando printf é uma extensão de ksh , bash e zsh , que exibirá a sequência em um formato que pode ser reutilizado como entrada do shell, mas não tem efeito a expansão das variáveis do shell.

    
por 28.04.2016 / 19:49

Tags