Intereting Posts
Я могу ssh на удаленную машину, но я не могу использовать scp для копирования локальных файлов на удаленную машину dircolor ошибки, вызванные разрешением ntfs-3g Какие возможности Linux мне нужны для записи в / proc / sys / vm / drop_caches? Скопирование в гном-терминале Файл спецификации RPM видит одну команду как две? Использование BASH против ASH для Synology Как я могу разбить USB-накопитель так, чтобы он был загрузочным и имел Windows-совместимый раздел хранения данных? Разрешить группе r / w в папке, принадлежащей конкретному пользователю Невозможно выполнить ssh через WiFi без подключения Ethernet sudo запомнить пароль для списка команд? Размер внутреннего буфера wget PyQt5 QMediaPlayer defaultServiceProvider :: requestService (): не найден сервис для – «org.qt-project.qt.mediaplayer» Синтаксическая ошибка, когда я использую SSH с AWK над BC Как определить, находятся ли два интерфейса Ethernet на одном и том же языке? Укажите, сколько раз каждая строка появляется в файле

Невозможно выполнить сценарий 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: команда не найдена

  • 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