Em vez do seguinte
printf '%s\t%s\t%s\t%s\n' 'index' 'podcast' 'website' 'YouTube'
Quero armazenar a saída do printf em uma variável Results, como posso fazer isso?
Em vez do seguinte
printf '%s\t%s\t%s\t%s\n' 'index' 'podcast' 'website' 'YouTube'
Quero armazenar a saída do printf em uma variável Results, como posso fazer isso?
Bash (desde 3.1), zsh (desde 5.3) e ksh93 (desde v- e u+m 2021-11-28) têm uma "opção de atribuição à variável" para
printf
:Observe que recebo duas novas linhas - uma do
printf
formato e outra do arquivoecho
.Você também pode controlar as larguras das colunas usando algo como
$-10s
para cada campo, em vez de tabulação.A vantagem disso sobre a sintaxe
$( ... )
or`back-quote`
, além de preservar as novas linhas finais, é que não é necessário executar um subshell para a atribuição, o que em shells diferentes de ksh93¹ é relativamente caro.¹ É menos caro no ksh93 onde não envolve bifurcação, mas pode ser feito ainda menos lá com a
${ printf...; }
forma de substituição. Esse será suportado na próxima versão do bash após 5.2.x, bem como na próxima versão do zsh após 5.9.x, bem como na${|...}
variante do mksh