Tabulação de String

1. Tabulação de String

Denis de Godoy
Denishooter32

(usa Outra)

Enviado em 25/11/2014 - 15:49h

Boa tarde pessoal,

Sou novato em Linux e "virgem" em ShellScript. Estou criando um pequno shell para cadastro de operadores e preciso tabular, organizar, alinhar, enfim, contatos telefonicos não se alinham corretamente, um debaixo do outro como deveriam ficar. Quanto maior o nome, mais longe a string percorre e não se alinham ( deu pra entender ? )
Assim é melhor:
USUARIO TELEFONE
Denishooter 9090
Paulo 2121
Joao Pedro 2345

Desta forma está ficando a formatação.
Segue o Script abaixo.

#!/bin/bash

nome=$1
tel=$2

if [ -f cadastro ]
then
printf "\n"
echo -e " Digite no nome do usuario: \c "
read nome

echo -e " Digite o telefone: \c "
read tel

echo -e "`printfs"$nome"` printf %15s "$tel" `" >> cadastro


echo " USUARIO CADASTRADO COM SUCESSO "

printf "\n"
else
printf "\n"
echo " ARQUIVO CADASTRO CRIADO COM SUCESSO! INSIRA OS DADOS NA PROXIMA EXECUCÃO "
printf "\n"
echo -e " USUARIO \t TELEFONE " > cadastro
printf "\n"
fi

Conseguiram entender?!
Fico grato pra quem entender e ajudar.
Abraço


  


2. Re: Tabulação de String

Renan Arantes
R3nan

(usa Debian)

Enviado em 25/11/2014 - 20:13h

kra tenta assim

OLD_IFS=$IFS
IFS=:

while read -a i; do
echo -e "Usuario..: ${i[0]}";
echo -e "Telefone.: ${i[1]}";
echo "-----------------------"
done < /home/usuario/cadastro

IFS=$OLD_IFS



3. Re: Tabulação de String

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 25/11/2014 - 20:47h

Então , optei por uma maneira mais "complexa" e simples ao mesmo tempo

Qualquer dúvida só postar aqui


#!/bin/bash

# Para que inicializar as vars com o argumento apos ser chamado o Shell e mesmo assim pedir o login e senha ?
#nome=$1
#tel=$2

if [ -f cadastro ]
then
printf "\n"

echo -e "Digite no nome do usuario: \c "

read nome

echo -e "Digite o telefone: \c "

read tel

qntCaracteres=$(echo $nome|wc -m)

if [ $(echo $qntCaracteres-1|bc) -gt 22 ];then

echo "Nome de usuario ultrapassou o limite , Desculpe"

exit -1

exit

elif [ $(echo $qntCaracteres-1|bc) -gt 16 ];then

echo -e "$(printf "$nome")$(printf "\t")$(printf %s "$tel")" >> cadastro

elif [ $(echo $qntCaracteres-1|bc) -gt 6 ];then

echo -e "$(printf "$nome")$(printf "\t\t")$(printf %s "$tel")" >> cadastro

else

echo -e "$(printf "$nome")$(printf "\t\t\t")$(printf %s "$tel")" >> cadastro

fi

echo "USUARIO CADASTRADO COM SUCESSO "

printf "\n"
else

printf "\n%s\n" "ARQUIVO CADASTRO CRIADO COM SUCESSO! INSIRA OS DADOS NA PROXIMA EXECUCÃO"

echo -e "USUARIO$(printf "\t\t\t")TELEFONE " > cadastro
fi


Tive que fazer uns testes antes para saber quantas "letras" é suportado com alguma tabulação , enfim , se tiver + de 22 letras , o programa finaliza

Se ajudei , marque o tópico como resolvido e escolha a melhor resposta

Espero ter ajudado

[]'s

T+


4. Re: Tabulação de String

Renan Arantes
R3nan

(usa Debian)

Enviado em 26/11/2014 - 09:35h

opa dei uma melhorada no exemplo que eu passei anteriormente veja o que vc acha...

Att
R3nan


#!/bin/bash

incluir () {
echo -e "Digite no nome do usuario: \c "
read nome

echo -e "Digite o telefone: \c "
read tel

echo "$nome:$tel" >> cadastro

echo "USUARIO CADASTRADO COM SUCESSO"
sleep 1
}

listar () {
OLD_IFS=$IFS
IFS=:
echo ""
echo "Usuario e Telefones Cadastrados"
echo "-----------------------"
while read -a i; do
echo -e "Usuario..: ${i[0]}";
echo -e "Telefone.: ${i[1]}";
echo "-----------------------"
done < $(pwd)/cadastro
IFS=$OLD_IFS
echo "Tecle algo para continuar..."
read
}

menu ()
{
opcao=""

while true $opcao !=""
do
clear
echo "MENU PRINCIPAL"
echo ""
echo "1 - Incluir"
echo "2 - Listar"
echo "3 - Finalizar"
echo ""
echo -n "Digite a opção desejada: "
read opcao
case $opcao in
1)incluir;;
2)listar;;
3)exit;;
esac
done
}
menu







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts