-
echo $'$foo'
: o token$'[...]'
em torno de$foo
interpreta$foo
literalmente (como$foo
) e tenta para expandir seqüências de escape semelhantes a ANSI C , que não estão presentes, portantoecho
rende$foo
; -
echo $"$foo"
: o token$"[...]"
em torno de$foo
expande$foo
para seu valor (pwd
) e tenta traduzi-lo se a localidade atual não for POSIX / C ; isso não está acontecendo, porque a localidade atual é POSIX / C ou uma tradução parapwd
não está disponível, portantoecho
yieldspwd
; -
echo $'$foo'
: o token'[...]'
em torno de$foo
permite a expansão de$foo
, então$foo
é expandido para seu valor (pwd
); o valor expandido é executado em um subshell, cuja saída (~/scripts
) substitui todo o token'[...]'
, portantoecho
produz o token$
seguido pelo token~/scripts
($~/scripts
).
Por fim, o último imprime $~/scripts
porque $'foo'
é uma combinação de um literal $
seguido por uma substituição de comando; então o $
inicial é interpretado como um literal $
e o '$foo'
à direita como uma substituição de comando.