Estou escrevendo um script bash para processar entradas do formulário html. Eu tenho dois problemas que não consigo descobrir. Eu sou um iniciante no Unix.
O primeiro problema é que não consigo fazer com que minha instrução if funcione usando o comando como condição. Eu estou tentando verificar a entrada do usuário da inicial do meio e ajustá-lo para garantir que ele possa ser combinado em $ answer.
Aqui está um exemplo de como é suposto processá-lo.
O usuário insere três campos diferentes do formulário html; primeiro nome, inicial do meio, sobrenome.
Primeiro nome: George
Inicial do meio: W.
Último nome: Bush
O script shell processa e compara a entrada do usuário e a resposta real.
Resposta real é "George W. Bush"
Entrada do usuário:
George W. Bush = correto eco "Você está correto!"
George W Bush = correto colocando automaticamente o período depois de "W"
George Bush! = Errado e eco "Sem inicial do meio!"
Geor W. Bus! = Errado e eco "O nome e sobrenome estão errados!"
#! /bin/bash
echo Content-type: "text/html"
echo ""
read input #name variable $first, $middle, $last name
first='user input'
middle='user input'
last='user input'
president='actual answer, full name of president'
answer='user answer, combination of $first, $middle, $last'
correctF='actual first name from $president'
correctM='actual middle initial from $president'
correctL='actual last name from $president'
#cut by column from $president
Primeiro problema começa aqui.
if [[ $(echo $middle | wc -l) = 1 ]] ; then
middle='echo "$middle""."'
#check if middle initial variable was entered with just the letter and place a period after
elif [[ $(echo $middle | grep '.') = 'true' ]] ; then
middle='echo "$middle"'
#check if middle initial variable was entered with the period and leave it as is
else
middle=''false''
#no middle initial variable was entered and is null
fi
Segundo problema em while loop com a instrução if.
Estou tentando comparar a entrada do usuário $ answer à resposta real $ president e ecoar o que está errado com $ answer. Nada é ecoado para esta seção.
while [ "$president" -ne "$answer" ] #not working
do
if [ "$first" -ne "$correctF" ]
then
echo "Wrong first name!"
elif [ "$middle" -ne "$correctM" ]
then
echo "Wrong middle initial!"
elif [ "$last" -ne "$correctL" ]
then
echo "Wrong last name!"
elif [ -z "$middle" -ne "$correctM" ]
then
echo "No middle initial!"
elif [ "$first" -ne "$correctF" ] && [ "$last" -ne "$correctL" ]
then
echo "Wrong first and last name!"
elif [ "$first" -ne "$correctF" ] && [ "$middle" -ne "$correctM" ]
then
echo "Wrong first name and middle initial!"
elif [ "$middle" -ne "$correctM" ] && [ "$last" -ne "$correctL" ]
then
echo "Wrong middle initial and last name!"
elif [ "$first" -ne "$correctF" ] && [ "$middle" -ne "$correctM"] && [ "$last" -ne "$correctL" ]
then
echo "You got it all wrong!"
else
echo "You are correct!"
fi
Eu pesquisei, pesquisei e experimentei muitos exemplos diferentes, mas não consegui encontrar uma solução.
Se alguém puder me orientar sobre como implementar adequadamente o comando na condição if statement e escrever if em várias condições, agradeceria muito.