Como criar uma nova linha dupla?

1

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
    
por Star OS 08.12.2015 / 22:42

3 respostas

8

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"
    
por Colin Ian King 08.12.2015 / 22:47
2

Use printf em vez disso:

printf "lollipop\nlollipo\nlollip\nlolli\nloll\nlol\nlo\nl"

    
por Eddie Dunn 08.12.2015 / 22:45
2

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)

    
por Sergiy Kolodyazhnyy 08.12.2015 / 22:59