Como fazer echoe printfbarras invertidas tratamento em zsh, bashe outras conchas?
No zsh , recebo o seguinte comportamento:
$ echo "foo\bar\baz"
foaaz
$ echo "foo\\bar\\baz"
foaaz
$ echo 'foo\bar\baz'
foaaz
$ echo 'foo\\bar\\baz'
foo\bar\baz
Sob o bash , as coisas parecem um pouco mais consistentes:
bash$ echo "foo\bar\baz"
foo\bar\baz
bash$ echo 'foo\bar\baz'
foo\bar\baz
bash$
Mas, mais concretamente: como passar uma string contendo barras invertidas, como\\foo\bar\something :
echoprintfprint
e obter exatamente a mesma string? (em zshe bash)?
Aqui está outro experimento com funções no zsh:
function foo
{
echo -E '$1'
}
$ foo \\here\is\some\path
$1
Como posso imprimir apenas \\here\is\some\path?
Atualização (Nota: isso já foi respondido no comentário de Stephane)
Eu tentei o seguinte no zsh 5.0.2:
function foo
{
printf '$s\n' $1
}
foo '\\some\path'
Mas isso imprime $s?
'por "e chame-a por: foo '\\ here \ is \ some \ path' (caso contrário, o shell de chamada terá a chance de interpretar o '\' antes de chegar à função)
'$s\n'quando deveria ter sido usada '%s\n'.
printf,echonão é portátil no que diz respeito.