Aqui está uma versão corrigida da seção if / then / elif / fi do seu script:
if [ "$ANSWER" == "S" ]
then
ANSWER='set grid'
else
ANSWER=""
fi
echo "you want the plot with boxes, with lines, or with points?"
read HOW
if [ "$HOW" == "boxes" ]
then
P=boxes
elif [ "$HOW" == "lines" ]
then
P=lines
elif [ "$HOW" == "points" ]
then
P=points
fi
Observe a falta de espaço após o =
ao definir ANSWER
e P
e o uso de elif
em vez de else if
. Eu também adicionei um espaço entre [
e as variáveis que estão sendo testadas [boxes
ou [S
não é o mesmo que [ boxes
ou [ S
. O primeiro tenta executar, por exemplo, o comando [boxes
, enquanto o segundo executa [
com um argumento de boxes
.
Eu também coloquei aspas em ANSWER='set grid'
, sem elas ele irá definir ANSWER=set
e então tentar executar um comando chamado grid
. Tecnicamente, deve haver cotações nas linhas P=
também, mas com apenas uma palavra (sem espaços) após o =
, não precisa delas.
Pessoalmente, colocaria o then
s nas mesmas linhas que o if
e elif
, porque eu acho que ele fica muito mais legível, mas isso não importa - é apenas uma preferência de estilo, o código funciona da mesma maneira.
if [ "$HOW" == "boxes" ] ; then
P=boxes
elif [ "$HOW" == "lines" ] ; then
P=lines
elif [ "$HOW" == "points" ] ; then
P=points
fi