Could not execute a Bash Script if / while

Вывод программ буферизуется, поэтому, если соединение медленное, программа будет остановлена, если буфер заполнится.

Если вы используете экран , у него также есть буфер, который он использует, чтобы попытаться отобразить в подключенном сеансе. Но программа, подключенная к сеансу экрана, не будет остановлена, если экран не сможет обновить удаленный терминал достаточно быстро. Так же, как при потере соединения, программа продолжает заполнять буфер экранов до тех пор, пока он не переполнится (выталкивая самую старую информацию). То, что вы видите (и можете прокрутить назад), зависит от того, что (все еще) находится в этом буфере. screen эффективно отключает вашу программу от вашего терминала (и вашего медленного SSH-соединения).

3
17.07.2016, 08:06
3 ответа

Проблема заключается в "если" перед

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
2
27.01.2020, 21:09

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

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 
2
27.01.2020, 21:09
  • index = $ number не может использовать пробелы вокруг = для присвоения переменных ..используйте index = $ number или ((index = number))
  • [$ index => 1] I предположим, вы хотите проверить, больше ли index или равно 1, используйте [$ index -ge 1] или ((index> = 1))
  • почему используется оператор break ? он используется для выхода из цикла
  • , а также , если оператор не требуется
  • , вы также можете использовать опцию read -p , чтобы добавить сообщение для пользователя

, поместив все вместе:

#!/bin/bash

read -p 'Enter a number: ' number

while ((number >= 1)) ; do
    echo $number
    ((number--))
done
7
27.01.2020, 21:09

Теги

Похожие вопросы