filename sem espaços de duas linhas de comando

3

Estou executando dois comandos do Linux e quero colocar os valores resultantes juntos em um nome de arquivo sem espaços e um ponto separando os dois valores. Até agora, eu tenho isso:

pid='sudo dmidecode -s system-product-name'
vid='sudo dmidecode -s system-version'
# cleanup spaces in $pid and $vid
filename=$pid.$vid.tar.gz

Como posso limpar os espaços nas duas variáveis?

    
por yahoo260539 24.08.2011 / 09:08

2 respostas

8

Você pode usar o bash "Pattern substitution" (procure por essa string na man page para detalhes).

filename=${pid// /}.${vid// /}.tar.gz

A barra dupla significa substituir todas as ocorrências do padrão. O espaço entre a barra dupla e a próxima barra é o padrão. O padrão de substituição é após a última barra, que neste caso está vazia. Você pode remover a barra final, mas eu prefiro isso para clareza, pois ele coloca o espaço entre parênteses.

    
por 24.08.2011 / 11:02
2

Você pode usar sed:

pid=$(sudo dmidecode -s system-product-name | sed 's/  *//g')
    
por 24.08.2011 / 09:23