Não foi possível executar um Bash Script se / while

3

Eu gostaria que alguém identificasse erros no meu roteiro. A fonte de onde eu estou aprendendo é tão buggy que é por isso que está me confundindo.

OBJETIVO DESTE SCRIPT: Ele irá contar os números de qualquer número que o usuário digitar para o número 1

#!/bin/bash

echo -n Enter a number

read number

if (($number > 0))  ; then

index = $number

while [ $index => 1 ]  ; do

echo $index

((index--))



break
done
fi    

ERROR IT GIVES: índice: comando não encontrado

    
por Anonymous 17.07.2016 / 06:54

3 respostas

7
  • index = $number não pode usar espaços em torno de = para atribuição de variável. use index=$number ou ((index = number))
  • [ $index => 1 ] Suponho que você queira verificar se index é maior ou igual a 1, use [ $index -ge 1 ] ou ((index >= 1))
  • por que a instrução break é usada? é usado para sair do loop
  • também a instrução if não é necessária
  • você também pode usar a opção read -p para adicionar mensagens ao usuário

colocando tudo junto:

#!/bin/bash

read -p 'Enter a number: ' number

while ((number >= 1)) ; do
    echo $number
    ((number--))
done
    
por 17.07.2016 / 07:26
2

O problema está no "if" antes

link

Eu acho que você quer algo como:

#!/bin/bash
echo -n "Enter a number : "
read number
echo $number

if [ $number -gt "0" ]  ; then
  ind="$number"
  while [ $ind -ge "1" ]  ; do
     echo $ind   
    ((ind--))
  done
fi
    
por 17.07.2016 / 07:34
2

Bem, você pode querer dar uma olhada em

man index

Uma versão corrigida do seu script funciona se você substituir o nome da variável

#!/bin/bash

echo -n Enter a number

read num

   if (($num > 0))  ; then

      ind=$num

      while [ $ind -ge 1 ]  ; do

         echo $ind

         ((ind--))

         break
         done
   fi 
    
por 17.07.2016 / 07:27