Impossible d'exécuter un script Bash si / while

J'aimerais que quelqu'un me signale des erreurs dans mon script. La source d'où j'apprends est tellement boguée que c'est pour ça que ça me déroute.

OBJET DE CE SCRIPT: Il countra les nombres à partir de n'importe quel nombre que l'user entre au numéro 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 

ERREUR IL DONNE: index: command introuvable

  • index = $number ne peut pas utiliser les espaces autour = pour l'assignation des variables .. use index=$number ou ((index = number))
  • [ $index => 1 ] Je suppose que vous voulez vérifier si l' index est supérieur ou égal à 1, utilisez [ $index -ge 1 ] ou ((index >= 1))
  • pourquoi l'instruction break est-elle utilisée? il est utilisé pour quitter la boucle
  • l'instruction if n'est pas obligatoire
  • vous pouvez également utiliser l'option read -p pour append un message à l'user

mettre tous set:

 #!/bin/bash read -p 'Enter a number: ' number while ((number >= 1)) ; do echo $number ((number--)) done 

Le problème est dans le "si" avant

http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html

Je suppose que vous voulez quelque chose comme:

 #!/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 

Eh bien, vous pourriez jeter un oeil à

 man index 

Une version corrigée de votre script fonctionne si vous remplacez le nom de la variable

 #!/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