Como atribuir o resultado do sed a variável

6

Abaixo está uma cópia completa de uma demonstração que estou usando para descobrir como obter o comando sed para se livrar dos espaços em um nome de pessoa e compactá-lo para não ter espaços.

Uma vez feito isso, eu quero atribuí-lo à variável comp , então eu posso reutilizá-lo mais tarde no script. Aqui estou apenas tentando echo dele para o stdout para que eu possa ver que funcionou.

Se eu executar o script e inserir meu nome como Ronald McDonald , o resultado que eu obtiver será RonaldMcDonald} com a chave no final do nome dele, ou o que eu digitar.

Como faço para que funcione, para que o resultado não acrescente o } ao final do texto atribuído.

#!/bin/bash

function readName {
    echo "Enter your full name:"
    read fullName
    clear
}    # end readName

function cmprsName {
    comp={ echo "$fullName" } | sed 's/ //g'
}    # end cmprsName

function sayItNow {
    echo $comp
}    # end sayItNow

function allTogether {
    readName
    cmprsName
    sayItNow
}    #end allTogether

case $1 in
        -h | --help )           allTogether
                                exit
                                ;;
        * )                     echo "$0 -h"
                                exit 1
esac
    
por Danijel-James W 05.10.2013 / 12:26

1 resposta

6

Você precisa usar a substituição de comandos para isso, ou seja, em vez de

comp={ echo "$fullName" } | sed 's/ //g'

algo como

comp=$(echo "$fullName"  | sed 's/ //g')

ou

comp='echo "$fullName"  | sed 's/ //g''
    
por 05.10.2013 / 12:50