erro de script de shell não conseguiu localizar [fechado]

1

Eu tenho este código e não consigo apontar o erro. É um programa simples para imprimir a tabela do número dado pelo usuário.

Aqui está o código:

#a function to calculate the table
call()
{
#to check if it is in function
  echo "in function"
#read from user a no whose table is to print
  read num
#taking counter
  i=0
  echo "going in loop"

        while [ $i -lt 10 ]
   do
        echo "in loop"

#incrementing the counter
        i=$(( $i + 1 ))

#s= i + sa
        s=$(($i * $num))

##printing the value of num
         echo "\t$num * $i =$s"
    done
  return 0
}


     while [ 1 ]
do
     echo "in main "

#calling the function call()
     echo "caliing call"
call()

#asking user to continue or not
     echo "COntinue.. or not [0/1] "
    read ch

 if [ $ch -eq 0 ]
   then
       {}
   else
       exit

 fi
done

e a saída é esta

nik-pc@nik:~$ sh cd.sh

in main 

caliing call

12

nik-pc@nik:~$
    
por Manish Bharti 22.03.2016 / 02:57

1 resposta

2

Em bash , para chamar (referir) uma função basta usar o nome da função, () não deve ser usado.

Portanto, altere call() para apenas call para se referir à função definida chamada call .

Observe que você ainda precisa de () no tempo de declaração da função.

Assim, por exemplo, ao declarar:

foobar () { .... ;}

Enquanto se refere:

foobar

Em sh ( dash ), a referência call() será silenciosamente ignorada sem gerar um erro e o shell passará para a próxima linha do script.

Além disso, a menos que tenha certeza, é melhor usar bash para executar esses tipos de scripts para evitar surpresas.

Além disso, há muitas coisas que podem ser melhoradas em seu código, o que está fora do escopo desta questão.

    
por heemayl 22.03.2016 / 03:05