coletando dados, salvando-os em um arquivo e reexecutá-lo novamente no script bash;

1

Eu sou novo no bash e escrevi esse script para coletar dados e depois salvá-lo em um arquivo automatizado. Ele corre bem até aqui, mas quando eu tento executar novamente o script para adicionar outros detalhes, isso me dá erros.

#!/bin/bash

#This program helps the user to collect contact details.
clear

options="Add_User End_session"

echo "1. Add another user"
echo "2. End session"
echo -n "Enter Selection:"
     read selection
     echo ""

select opt in $options; do

if ["$opt" = "End Session" ]; then
echo done
exit

elif ["opt" = "Add another user"]; then

echo "Dear, user . This script will help you to collect data from people."

echo "Type the name:"
read name
echo "Type the age:"
read age
echo "Type the address:"
read address
echo "Type the gender:"
read gender
echo "Type the phone number:"
read phone number
echo "Type the email:"
read email

echo "Full Details"

echo "$name"
echo "$age"
echo "$address"
echo "$gender"
echo "$phone"
echo "$email"

echo "Name: $name" >> Datacollection.txt
echo "Age: $age" >> Datacollection.txt
echo "Address: $address" >> Datacollection.txt
echo "Gende: $gender" >> Datacollection.txt
echo "Phone Number: $phonenumber" >> Datacollection.txt
echo "E-mail Address: $email" >> Datacollection.txt

else
clear
echo bad option
fi
done
    
por kingtech 03.12.2012 / 02:39

1 resposta

3

Você não especificou a natureza dos erros. Você deve sempre especificar a (s) mensagem (ns) de erro exata ao solicitar ajuda. Caso contrário, é como se você estivesse esperando que outras pessoas fizessem toda a sua depuração para você. Tome um segundo ou dois para fornecer as informações mais básicas e óbvias, e você provavelmente receberá muito mais ajuda.

No entanto, aqui estão algumas notas:

  1. Ao ler o número de telefone, você tem um espaço, o que significa que você está lendo em duas variáveis separadas. Quando você tenta colocá-lo no arquivo, está chamando a variável por um nome diferente.

    echo "Type the phone number:"
    read phone number
    #...
    echo "Phone Number: $phonenumber" >> Datacollection.txt
    
  2. Você precisa de espaços entre colchetes ( [] ) e seu conteúdo. Assim, esta linha está errada:

    elif ["opt" = "Add another user"]; then
    
  3. Além do anterior, tenha cuidado com o que você está comparando. Você não tem nenhum cifrão na frente de "opt" , então você está comparando a string literal, não o valor dela.
  4. Sua rotina de seleção de opções está totalmente quebrada. Você precisará jogá-lo fora e reescrevê-lo, usando uma abordagem diferente. Dica: Quaisquer que sejam os tipos de usuários armazenados na variável que você passa para read . Você estará testando esse valor, então considere cuidadosamente o que o usuário precisa digitar e como você pode comunicar isso. Dica 2: Digite help select para ver a documentação de uma boa maneira de abordar isso.

  5. Finalmente, uma ferramenta realmente valiosa para depurar seu script é set -x . Coloque-o no topo do seu script. Então você poderá ver tudo no seu script enquanto o shell o interpreta. Se algo parece errado, você encontrou um bug.

por Scott Severance 03.12.2012 / 07:30