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