Como adicionar uma string com espaços no final da saída do comando

2

Eu quero adicionar uma string com espaços no final de cada linha da saída do comando ls .

#!/bin/sh
STRING_WITH_SPACES="this should be at the end of output"
ls -lh | sed 's|$| '$STRING_WITH_SPACES'|'

O script acima funciona bem quando $STRING_WITH_SPACES não tem espaços:

-rw-r--r-- 1 me users 0 May  4 14:55 testfile thisshouldbeattheend

No entanto, quando há espaços em $STRING_WITH_SPACES sed reclama:

sed: -e expression #1, char 9: unterminated 's' command

Como posso resolver isso?

    
por Babken Vardanyan 04.05.2014 / 12:58

2 respostas

7
STRING_WITH_SPACES="a string with spaces"
ls -l | sed "s/$/ $STRING_WITH_SPACES/"
    
por 04.05.2014 / 13:32
3

Por favor, não analise a saída de ls . Não há razão para e complica as coisas. Uma maneira mais segura de escrever seu roteiro seria

#!/bin/sh
STRING_WITH_SPACES="this should be at the end of output"
find . -maxdepth 1 -mindepth 1 -ls | sed "s/$/ $STRING_WITH_SPACES/"
    
por 04.05.2014 / 14:34