Невозможно выполнить сценарий Bash, если / while

Я бы хотел, чтобы кто-то указал на ошибки в моем сценарии. Источник, из которого я учусь, настолько багги, поэтому меня это сбивает с толку.

ЦЕЛЬ ЭТОГО СКРИПТА: Он будет подсчитывать числа от любого числа, которое пользователь вводит на номер 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: index: команда не найдена

3 Solutions collect form web for “Невозможно выполнить сценарий Bash, если / while”

  • index = $number не может использовать пробелы вокруг = для присваивания переменной .. use index=$number or ((index = number))
  • [ $index => 1 ] Предположим, вы хотите проверить, больше или равен [ $index -ge 1 ] 1, использовать [ $index -ge 1 ] или ((index >= 1))
  • почему используется оператор break ? он используется для выхода из цикла
  • также утверждение if не требуется
  • вы также можете использовать параметр read -p для добавления сообщения для пользователя

все вместе:

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

Проблема в "if" перед

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

Я думаю, вы хотите что-то вроде:

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

Ну, вы можете взглянуть на

 man index 

Исправленная версия скрипта работает, если вы замените имя переменной

 #!/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 
  • Как использовать расширенное значение переменной оболочки в имени другой переменной?
  • grep переменная в выражении if
  • Развертывание Jenkins не передается переменной java
  • Переменная в команде find задана новой переменной в bash
  • Переменные баша в команде
  • Как распространять значение переменной
  • dirname и basename против расширения параметров
  • bash - добавить пустую строку в heredoc через переменную
  • bash - определяющие переменные с VAR = $ {: - по умолчанию}
  • Удалить определенное слово в переменной
  • Невозможно назначить вывод вложенных команд переменной в bash
  • Linux и Unix - лучшая ОС в мире.