<Попередній | зміст | Наступна>
в той час як
bash може висловити подібну ідею. Скажімо, ми хочемо відобразити п’ять чисел послідовно
порядок від одного до п'яти. а бити скрипт можна побудувати так:
#! / бін / баш
# while-count: відобразити серію чисел count=1
while [[ $count -le 5 ]]; зробити echo $count count=$((count + 1))
зроблений
echo «Готово».
#! / бін / баш
# while-count: відобразити серію чисел count=1
while [[ $count -le 5 ]]; зробити echo $count count=$((count + 1))
зроблений
echo «Готово».
Після виконання цей скрипт відображає таке:
[me@linuxbox ~]$ while-count
1
2
3
4
5
Готово.
[me@linuxbox ~]$ while-count
1
2
3
4
5
Готово.
Синтаксис в той час як команда така:
в той час як Команди; робити Команди; зроблено
Люблю if, в той час як оцінює статус виходу зі списку команд. Поки статус виходу дорівнює нулю, він виконує команди всередині циклу. У сценарії вище змінна вважати створюється і присвоюється початкове значення 1. The в той час як команда оцінює статус виходу [[]] складена команда. Поки [[]] команда повертає статус виходу нульовий, команди в циклі виконуються. В кінці кожного циклу, [[]] команда повторюється. Після п'яти ітерацій циклу значення вважати зросла до 6, ст [[]] Команда більше не повертає статус виходу, рівний нулю, і цикл завершується. Програма продовжується наступним оператором після циклу.
Ми можемо використовувати a поки петля для поліпшення меню читання програма з попередньої глави:
#! / бін / баш
# while-menu: системна інформаційна програма, керована меню
#! / бін / баш
# while-menu: системна інформаційна програма, керована меню
ЗАТРИМКА=3 # Кількість секунд для відображення результатів
в той час як [[ $REPLY != 0 ]]; робити
ясно
кіт <<- _EOF_
Оберіть будь ласка:
1. Відображення системної інформації
2. Відобразити дисковий простір
3. Відображення використання домашнього простору
0. Киньте
_EOF_
read -p "Введіть вибір [0-3] > "
якщо [[ $REPLY =~ ^[0-3]$ ]]; тоді якщо [[ $REPLY == 1 ]]; тоді
echo "Ім'я хосту: $HOSTNAME" час роботи
спати $DELAY
fi
якщо [[ $REPLY == 2 ]]; потім df -h
спати $DELAY
fi
якщо [[ $REPLY == 3 ]]; тоді
якщо [[ $(id -u) -eq 0 ]]; тоді
echo "Використання домашнього простору (всі користувачі)" du -sh /home/*
ще
echo "Використання домашнього простору ($USER)" du -sh $HOME
fi
спати $DELAY
fi
ще
echo "Недійсний запис."
спати $DELAY
fi
зроблений
echo «Програму припинено».
ЗАТРИМКА=3 # Кількість секунд для відображення результатів
в той час як [[ $REPLY != 0 ]]; робити
ясно
кіт <<- _EOF_
Оберіть будь ласка:
1. Відображення системної інформації
2. Відобразити дисковий простір
3. Відображення використання домашнього простору
0. Киньте
_EOF_
read -p "Введіть вибір [0-3] > "
якщо [[ $REPLY =~ ^[0-3]$ ]]; тоді якщо [[ $REPLY == 1 ]]; тоді
echo "Ім'я хосту: $HOSTNAME" час роботи
спати $DELAY
fi
якщо [[ $REPLY == 2 ]]; потім df -h
спати $DELAY
fi
якщо [[ $REPLY == 3 ]]; тоді
якщо [[ $(id -u) -eq 0 ]]; тоді
echo "Використання домашнього простору (всі користувачі)" du -sh /home/*
ще
echo "Використання домашнього простору ($USER)" du -sh $HOME
fi
спати $DELAY
fi
ще
echo "Недійсний запис."
спати $DELAY
fi
зроблений
echo «Програму припинено».
Увімкнувши меню у цикл while, ми можемо змусити програму повторювати відображення меню після кожного вибору. Цикл триває до тих пір, поки ВІДПОВІДЬ не дорівнює «0», і меню знову відображається, даючи користувачеві можливість зробити інший вибір. В кінці кожної дії а сон Команда виконується, тому програма зупиняється на кілька секунд, щоб побачити результати вибору, перш ніж екран буде очищено і меню знову відобразиться. один раз ВІДПОВІДЬ дорівнює «0», що вказує на вибір «вийти»,
цикл закінчується, і виконання продовжується з наступного рядка зроблений.