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''
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