Você precisa usar a opção -e "ativar a interpretação de escapes com barra invertida" com \ n para forçar novas linhas
echo -e "lollipop\nlollipo\nlollip\nlolli\nloll\nlol\nlo\nl"
Eu quero imprimir no Terminal algo assim:
lollipop
lollipo
lollip
lolli
loll
lol
lo
l
No entanto, se eu fizer -n duas vezes eu recebo uma nova linha e, em seguida, apenas imprime "-n" se eu usar o eco. Como posso evitar que isso aconteça e fazer essa bagunça não imprimir quando eu executo o X:
lollipop
lollipo-nlollip-nlolli-nloll-nlol-nlo-nl
X:
echo lollipop -n lollipo -n lollip -n lolli -n loll -n lol -n lo -n l
Você precisa usar a opção -e "ativar a interpretação de escapes com barra invertida" com \ n para forçar novas linhas
echo -e "lollipop\nlollipo\nlollip\nlolli\nloll\nlol\nlo\nl"
Use printf em vez disso:
printf "lollipop\nlollipo\nlollip\nlolli\nloll\nlol\nlo\nl"
Prefira ferramentas portáteis e de alto nível para formatação especial em vez de ferramentas como echo. Aqui estou usando o AWK para imprimir a substring cada vez menor que foi fornecida com here-string
. Note que eu poderia ter usado printf "%s" lollipop | awk . . .
também para melhor portabilidade
$ awk '{for(i=length();i>=1;i--) print substr(,1,i)}' <<< "lollipop"
lollipop
lollipo
lollip
lolli
loll
lol
lo
l
A função de impressão do AWK sempre imprime uma única linha, similar a System.out.println
do java. Isso pode ser substituído por print "%s\n",substr(,1,i)