Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Командная строка Linux. ПолноС руководство». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 80

Автор Уильям Шоттс

else

echo "'$REPLY' is not a floating point number."

fi

# Π²Π²Π΅Π΄Π΅Π½ΠΎ Ρ†Π΅Π»ΠΎΠ΅ число?

if [[ $REPLY =~ ^-?[[:digit:]]+$ ]]; then

echo "'$REPLY' is an integer."

else

echo "'$REPLY' is not an integer."

fi

else

echo "The string '$REPLY' is not a valid filename."

fi

Π­Ρ‚ΠΎΡ‚ сцСнарий ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ввСсти элСмСнт Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ содСрТимоС. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π² сцСнарии использовано мноТСство ΠΈΠ΄Π΅ΠΉ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ ΡƒΠΆΠ΅ познакомились, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ [[ ]], (( )), ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ управлСния && ΠΈ if, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·ΡƒΠΌΠ½ΡƒΡŽ Π΄ΠΎΠ·Ρƒ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ healthy.

МСню


Часто для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ мСню. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, управляСмыС систСмой мСню, выводят список Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ…. НапримСр, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

1. ВывСсти ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ систСмС

2. ВывСсти ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ дисковом пространствС

3. ВывСсти ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± объСмС домашнСго ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°

0. Π’Ρ‹ΠΉΡ‚ΠΈ

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ [0-3] >

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ всС, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ Π² Ρ…ΠΎΠ΄Π΅ создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ sys_info_page, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΡƒΡŽ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡, пСрСчислСнных Π² мСню, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅:

#!/bin/bash

# read-menu: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄Π° систСмной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ,

# управляСмая с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ мСню

clear

echo "

Please Select:

1. Display System Information

2. Display Disk Space

3. Display Home Space Utilization

0. Quit

"

read -p "Enter selection [0-3] > "

if [[ $REPLY =~ ^[0-3]$ ]]; then

if [[ $REPLY == 0 ]]; then

echo "Program terminated."

exit

fi

if [[ $REPLY == 1 ]]; then

echo "Hostname: $HOSTNAME"

uptime

exit

fi

if [[ $REPLY == 2 ]]; then

df -h

exit

fi

if [[ $REPLY == 3 ]]; then

if [[ $(id -u) -eq 0 ]]; then

echo "Home Space Utilization (All Users)"

du -sh /home/*

else

echo "Home Space Utilization ($USER)"

du -sh $HOME

fi

exit

fi

else

echo "Invalid entry." >&2

exit 1

fi

Π­Ρ‚ΠΎΡ‚ сцСнарий дСлится Π½Π° Π΄Π²Π΅ логичСскиС части. ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ мСню ΠΈ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π²Ρ‹Π±ΠΎΡ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Вторая Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹Π±ΠΎΡ€ ΠΈ выполняСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° exit Π² этом сцСнарии. Она прСпятствуСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π·Π°Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ дСйствия. НаличиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚ΠΎΡ‡Π΅ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΎΠΎΠ±Ρ‰Π΅ считаСтся Π΄ΡƒΡ€Π½Ρ‹ΠΌ Ρ‚ΠΎΠ½ΠΎΠΌ (Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ), Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ сцСнарии нас это устраиваСт.

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅


Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ сдСлали ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг ΠΊ интСрактивности, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² наши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ описанныС ΠΏΡ€ΠΈΠ΅ΠΌΡ‹, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ мноТСство ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ спСциализированныС вычислСния ΠΈΠ»ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠ΅ доступ ΠΊ таинствСнным инструмСнтам ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ‹ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΡƒΠ΅ΠΌ идСю ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, управляСмых ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ мСню, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ большСго.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния


ΠŸΠΎΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· этой Π³Π»Π°Π²Ρ‹ ΠΈ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ понимания ΠΈΡ… логичСской структуры, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Π΄Π°Π»Π΅Π΅, Π±ΡƒΠ΄ΡƒΡ‚ Π΅Ρ‰Π΅ слоТнСС. Π’ качСствС упраТнСния ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ этой Π³Π»Π°Π²Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ test вмСсто составной ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ [[ ]]. Подсказка: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ grep для сопоставлСния с рСгулярными выраТСниями, Π° Π·Π°Ρ‚Π΅ΠΌ провСряйтС ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. Π­Ρ‚ΠΎ станСт для вас Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ.

29. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ выполнСния: Ρ†ΠΈΠΊΠ»Ρ‹ while ΠΈ until


Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ‹ написали ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΡƒΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ мСню, для получСния Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° систСмной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΎ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Π° Π² использовании. Она выполняСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. Π₯ΡƒΠΆΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² случаС ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ сообщСния ΠΎΠ± ошибкС, Π½Π΅ давая возмоТности ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅, Ссли Π±Ρ‹ ΠΎΠ½Π° снова ΠΈ снова Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ»Π° мСню ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π»Π° ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ ΠΏΡƒΠ½ΠΊΡ‚, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ познакомимся с ΠΏΡ€ΠΈΠ΅ΠΌΠ°ΠΌΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ², с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ участков ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Командная ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈ составныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ². Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ познакомимся с двумя ΠΈΠ· Π½ΠΈΡ…, Π° с Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ β€” Π² Π³Π»Π°Π²Π΅ 33.

Π¦ΠΈΠΊΠ»Ρ‹


ПовсСднСвная Тизнь Π½Π°ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠΌΠΈΡΡ дСйствиями. КаТдоднСвная ΠΏΠΎΠ΅Π·Π΄ΠΊΠ° Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΏΡ€ΠΎΠ³ΡƒΠ»ΠΊΠ° с собакой ΠΈ Π½Π°Ρ€Π΅Π·Π°Π½ΠΈΠ΅ ΠΌΠΎΡ€ΠΊΠΎΠ²ΠΈ β€” всС эти дСйствия состоят ΠΈΠ· ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π΅ΠΉΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ дСйствий. Рассмотрим Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ€Π΅Π·ΠΊΡƒ ΠΌΠΎΡ€ΠΊΠΎΠ²ΠΈ. Π­Ρ‚ΠΎΡ‚ Π²ΠΈΠ΄ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Π½Π° псСвдокодС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

1. Π’Π·ΡΡ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»ΠΎΡ‡Π½ΡƒΡŽ доску.

2. Π’Π·ΡΡ‚ΡŒ Π½ΠΎΠΆ.

3. ΠŸΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΠΌΠΎΡ€ΠΊΠΎΠ²ΡŒ Π½Π° доску.

4. ΠŸΠΎΠ΄Π½ΡΡ‚ΡŒ Π½ΠΎΠΆ.

5. Π‘Π΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ ΠΌΠΎΡ€ΠΊΠΎΠ²ΡŒ.

6. ΠžΡ‚Ρ€Π΅Π·Π°Ρ‚ΡŒ кусок.

7. Если вся ΠΌΠΎΡ€ΠΊΠΎΠ²ΡŒ ΠΏΠΎΡ€Π΅Π·Π°Π½Π°, Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, ΠΈΠ½Π°Ρ‡Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡˆΠ°Π³Ρƒ 4.

Π¨Π°Π³ΠΈ с 4-Π³ΠΎ ΠΏΠΎ 7-ΠΉ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Ρ†ΠΈΠΊΠ». ДСйствия Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ условиС «вся ΠΌΠΎΡ€ΠΊΠΎΠ²ΡŒ ΠΏΠΎΡ€Π΅Π·Π°Π½Π°Β».

while


Π’ bash ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ срСдства, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ ΠΈΠ΄Π΅ΠΈ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ вывСсти ΠΏΡΡ‚ΡŒ чисСл ΠΏΠΎ порядку, ΠΎΡ‚ 1 Π΄ΠΎ 5. Π’ сцСнарии Π½Π° языкС bash это ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

#!/bin/bash

# while-count: Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ чисСл

count=1

while [ $count -le 5 ]; do

echo $count

count=$((count + 1))

done

echo "Finished."

Если Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ этот сцСнарий, ΠΎΠ½ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚:

[ [email protected] ~]$ while-count

1

2

3

4

5

Finished.

Команда while ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

while ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹; do ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹; done

Подобно if, ΠΊΠΎΠΌΠ°Π½Π΄Π° while провСряСт ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ списка ΠΊΠΎΠΌΠ°Π½Π΄. Пока ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π²Π΅Π½ 0, ΠΎΠ½Π° выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°. Π’ сцСнарии, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅, создаСтся пСрСмСнная count, ΠΈ Π΅ΠΉ присваиваСтся Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1. Команда while провСряСт ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ test. Пока test Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠ΄ 0, ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ выполняСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° test. ПослС ΡˆΠ΅ΡΡ‚ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Ρ†ΠΈΠΊΠ»Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ count увСличится Π΄ΠΎ 6, ΠΊΠΎΠΌΠ°Π½Π΄Π° test Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚ 0, ΠΈ Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ с инструкции, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ нСпосрСдствСнно Π·Π° Ρ†ΠΈΠΊΠ»ΠΎΠΌ.

Π¦ΠΈΠΊΠ» while ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ read-menu ΠΈΠ· Π³Π»Π°Π²Ρ‹ 28:

#!/bin/bash

# while-menu: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄Π° систСмной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ,

# управляСмая с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ мСню

DELAY=3 # ВрСмя отобраТСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π½Π° экранС (Π² сСкундах)

while [[ $REPLY != 0 ]]; do

clear

cat <<- _EOF_

Please Select:

1. Display System Information

2. Display Disk Space

3. Display Home Space Utilization

0. Quit

_EOF_

read -p "Enter selection [0-3] > "

if [[ $REPLY =~ ^[0-3]$ ]]; then

if [[ $REPLY == 1 ]]; then

echo "Hostname: $HOSTNAME"

uptime

sleep $DELAY

fi

if [[ $REPLY == 2 ]]; then

df -h

sleep $DELAY

fi

if [[ $REPLY == 3 ]]; then

if [[ $(id -u) -eq 0 ]]; then

echo "Home Space Utilization (All Users)"

du -sh /home/*

else

echo "Home Space Utilization ($USER)"

du -sh $HOME

fi

sleep $DELAY

fi

else

echo "Invalid entry."

sleep $DELAY

fi

done

echo "Program terminated."

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΠ² мСню Π² Ρ†ΠΈΠΊΠ» while, ΠΌΡ‹ смогли Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ мСню послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹Π±ΠΎΡ€Π°. Π¦ΠΈΠΊΠ» ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ мСню, ΠΏΠΎΠΊΠ° пСрСмСнная REPLY Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0, прСдоставляя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€. ПослС выполнСния Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ выполняСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° sleep, ΠΎΠ½Π° приостанавливаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° нСсколько сСкунд ΠΈ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ экран Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡ΠΈΡ‰Π΅Π½ ΠΈ Π½Π° Π½Π΅ΠΌ вновь появится мСню. Когда пСрСмСнная REPLY ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρƒ Β«QuitΒ» (Π²Ρ‹ΠΉΡ‚ΠΈ), Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ продолТится со строки, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π° done.

ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π°


Π’ bash ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π΄Π²Π΅ встроСнныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для управлСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ выполнСния Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ². Команда break Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ†ΠΈΠΊΠ», послС Ρ‡Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ продолТаСтся с ΠΏΠ΅Ρ€Π²ΠΎΠΉ инструкции, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π° Ρ†ΠΈΠΊΠ»ΠΎΠΌ. Команда пропускаСт ΠΎΡΡ‚Π°Π²ΡˆΡƒΡŽΡΡ Ρ‡Π°ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ»Π°, ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°. НиТС приводится вСрсия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ while-menu, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ ΠΎΠ±Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ β€” break ΠΈ continue:

#!/bin/bash

# while-menu2: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄Π° систСмной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ,

# управляСмая с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ мСню

DELAY=3 # ВрСмя отобраТСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π½Π° экранС (Π² сСкундах)

while true; do

clear

cat <<- _EOF_

Please Select: