Програмування в bash - частина 2

Частина друга цього міні-підручник програмування в Удар, де ми вчимося користуватися ciclos та інші інструменти, які допоможуть нам покращити наші функціональні можливості scripts.

Якщо умовно

Функція If полягає у застосуванні фільтра та виконанні операції або завдання для кожного типу застосованого фільтра. Його структура така:

Якщо [умова]; потім команди elif [умова]; тоді ще команди; команди fi

Приклад показано у циклі For у відповідному розділі.

Цикли

1. У той час як: він буде виконувати всі команди, вказані між do і done, доки умова відповідає істині. Якщо ми хочемо передати йому оператори порівняння, вираз повинен бути в дужках.

в той час як CONDITION / COMMAND виконує команди

Приклад: таблиця множення числа

#! / bin / bash X = 1 echo "Введіть число і натисніть ENTER" читайте M # Цикл контролює, що X менше або дорівнює 10, тоді як [$ X –le 10] do # У R ми зберігаємо множення X на MR = $ [X * M] # Це множення друкується на луні екрану "$ M * $ X = $ R" # З дозволом ми збільшуємо значення X на 1 одиницю, нехай X = $ X + 1 виконано

2. Для: зберігає список елементів у змінній, яка буде використовуватися для виконання певних операцій з кожним циклом.

для VARIABLE в ELEMENTS виконуються команди, виконані

Приклад: програма, яка копіює файл з однієї папки в іншу, замінюючи старий файл.

# / bin / bash # Встановлюємо вихідні та кінцеві каталоги ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Ми позиціонуємо себе у вихідному cd $ ORIGIN # З усіх файлів ми хочемо лише той, який is # call FILE for FILE in * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f фільтрує нам звичайні файли, оскільки каталоги # нічого хорошого для нас не мають. –Не відфільтровує # файли «новіші», ніж ті, що знайдені в цільовій папці, якщо [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; потім echo "Копіювання $ FILE ..." # ми копіюємо файл за допомогою cp cp $ FILE $ ARCH-DESTINATION fi зроблено # Ми cd для виходу з вихідної папки cd

Інший приклад: сценарій, де користувач повинен відгадати випадкове число, сформоване комп’ютером.

# / bin / bash # Випадкове число генерується від 1 до 10, воно # зберігається у СЛУЧАЙНОМУ СЛУЧАЙНОМУ $ $ [$ РАНДОМ% 10 + 1], тоді як [1] ​​do echo –n "Введіть число:" прочитайте NUM Порівняйте, якщо вибраний користувачем номер # дорівнює СЛУЧАЙНОМУ; не забудьте використовувати $ для обчислення #значень змінних, а не їх імен, якщо [“$ NUM –eq“ $ RANDOM ”]; потім луна "Ви правильно зрозуміли!" #break дозволяє закінчити цикл під час перерви # Якщо число менше РАНДОМ elif [“$ NUM –gt“ $ RANDOM ”]; тоді відлуння "Менше" "Якщо ні, то це більше, ніж РАНДОМ, інакше відлуння" ВІН більше "fi виконано

3. До: досить схожа за структурою на While, за винятком того, що код завжди виконується, коли оцінка умови є негативною, тобто програма продовжує виконувати "доти, доки не настане умова"

поки CONDITION / COMMAND не виконують команди

Приклад: надрукуйте числа 10-20 у порядку зменшення

#! / bin / bash CONT = 20 # Поки лічильник менше 10 (-lt, “нижчий # ніж”), код виконується до [$ CONT -lt 10]; do echo "COUNTER $ CONT" #A CONT віднімається одиницею, нехай CONT- = 1 виконано

4. Виберіть: цей останній цикл є особливим випадком, оскільки він, як правило, використовується для швидкого створення меню. Він працює подібно до циклу For.

оберіть ЗМІННИЙ у СПИСКУ виконаних команд

Приклад: надайте користувачеві можливість продовжити або закінчити сценарій.

#! / bin / bash #item - це змінна, яка відповідає вибраному # користувачем, Продовжити і Готово - доступні йому # варіанти, хоча можна додати інші опції # ще вибрати пункт у Продовжити Готово зробити # Якщо користувач вибере закінчуємо програму, потім з перервою виходимо з циклу. якщо [$ item = "Finish"]; потім перерва fi зроблено
Дякую Хуану Карлосу Ортісу!

Зміст статті відповідає нашим принципам редакційна етика. Щоб повідомити про помилку, натисніть тут.

13 коментарі, залиште свій

Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   Середній Важкий - сказав він

    Я думаю приблизно так: tar -cf - Каталог | (cd / other / directory; tar -xvf -)

    Тоді це буде виглядати як / інший / каталог / Каталог
    Таким чином я стиснув каталог, а ви розпакуєте його в іншому місці….

  2.   Мігель Анхель - сказав він

    Привіт, чудово, я вивчаю цю тему, і все в порядку, тільки я не зміг створити програму, яка мені допомагає, щоб побачити, чи можете ви мені допомогти, будь ласка.

    Мені потрібно зробити цикл, в якому він отримає як параметри список вихідного файлу, цей список приносить лише імена (без розширення), так що цикл робить наступне, шукайте вказане ім'я, отримане в каталозі (який є той, який ми будемо шукати), витягніть та скопіюйте файл (повне ім’я вже з розширенням) та абсолютний шлях та створіть його в іншому цільовому файлі.

    Поки що я маю таке:

    під час читання рядка
    do
    echo -e "$ line"
    find / home / myuser / dof "$ line" -exec readlink -f {};
    done <testlist.txt Поки що я прочитав файл, кожен його рядок, але я не можу змусити його шукати цей файл та витягти інформацію. Якщо ви можете мені допомогти, дякую. На ура

  3.   Памела галавіз - сказав він

    Щиро дякую за внесок 🙂

  4.   Маріо Хав'єр - сказав він

    привіт ... сподіваюся, ти зможеш допомогти в наступній практиці ... Розпакуйте файл у tgz у вказаному каталозі, крім зазначення користувача та групи для всіх існуючих каталогів та файлів, а також призначення дозволів для файлів та каталогів
    Примітка: файли, готові до читання та запису
    дозвіл на виконання каталогів

  5.   Джуанк - сказав він

    ARCH-DESTINATION - це змінна, у якій ми хочемо зберегти шлях до цільового файлу, крім резервування. Потім до цієї змінної ми вказуємо змінну DESTINATION, яка вище містить шлях до папки Documents, і ми додаємо "змінну" FILE, яка містить ім'я файлу. Якби цей файл був, наприклад, list.doc, змінна ARCH-DESTINATION була б рівною /home/Usuario/Documentos/listado.doc

  6.   Давайте використовувати Linux - сказав він

    Це попередня стаття. Ви можете отримати до нього доступ за адресою http://usemoslinux.blogspot.com

    Обійми! Павло.

  7.   Френк - сказав він

    Доброго ранку, товариш, просто дякую, твій блог дуже хороший, але я не можу отримати першу частину Програмування в Bash, де я отримую подяку, вітаю

  8.   Сайто Мордрауг - сказав він

    Дві надзвичайні частини, щирі вітання.

    Просто чудово.

  9.   Fredy - сказав він

    Bien

  10.   Хьюго - сказав він

    Привіт, я роблю програму з CASE, що я хочу робити, і я не знаю як, наприклад:

    echo Вибирає варіант:
    нудьгувати
    ехо 1. варіант 1
    ехо 2. варіант 2
    ехо 3. варіант 3
    ехо 4. варіант 4
    ехо 5. Вихід
    прочитати var
    справа "$ var" в
    1)
    echo "Ви вибрали варіант 1"
    ;;
    2)
    echo "Ви вибрали варіант 2"
    ;;
    3)
    викидати "….."
    ;;
    4)
    викидати "…."
    ;;
    5)
    викидати "…"

    ;;
    *)
    echo "неправильний варіант"
    ;;
    що С

    добре, що я не знаю, як це зробити, це те, що коли я вибираю варіант 4, який має вийти, запитаю, чи дійсно я хочу вийти, і даю мені 2 варіанти Y & N

    а інший - коли ви вибираєте щось інше, ніж цифри 1..5, не голосуйте за мене зі сценарію ....

    Не могли б ви допомогти мені, дякую.

  11.   ДАПАМА21 - сказав він

    Привіт, я почав писати сценарії 1 місяць тому, завдяки вашим публікаціям у сценаріях. Я зробив близько 15-20. Заздалегідь дуже дякую. Але зараз наш учитель дав нам роботу, на якій я застійний. Оскільки вчитель запитує:
    передаючи каталог, скопіюйте додому всі файли, що знаходяться в цьому каталозі, за алфавітом і називаючи їх file1 file2 тощо ... і т.д. ...
    Зараз я перебуваю в момент пошуку або знаходження, я хотів скористатися функцією пошуку, але при введенні йому коду помилки, як-от я пропустив його через dev null, дозволи відмовлені, тоді я помиляюся і розміщую місцезнаходження, яке я тут:
    знайдіть $ 1 | grep "/ $ {1} \ $"
    але звичайно з цим вони всі виходять ...
    Щиро дякую, якщо прочитали.
    Якщо ви можете мені допомогти, це було б великою послугою.

  12.   Луїс - сказав він

    Я хотів би, щоб ви допомогли мені в цьому.
    1.-Введіть на клавіатурі ціле число та двічі та втричі відображте це число на екрані. 2. - Складіть програму, яка вирішить, чи ділиться число, введене за допомогою клавіатури, на 3 чи ні.
    3. - Складіть програму, щоб знайти суму: ???????? + ???????? + ???????? + ???????? + ⋯? ???????
    4.- Складіть програму для знаходження суми 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
    5. Створіть програму, яка 10 разів друкує слово Linux на екрані
    6.-Створіть програму, яка друкує слово Linux на екрані стільки разів, що вказав користувач.
    7.-Введіть суму в годинах і перетворіть їх у хвилини та секунди.
    8.-Обчисліть площу трикутника
    9.-Введіть число за допомогою клавіатури, тоді якщо ви введете 2, воно має бути у квадраті, 3 кубиками, 4 - до четвертого і так далі до 6.
    10-Розрахуйте пенсію, яку повинен виплатити студент, потрібно ввести код спеціальності та дні затримки:
    КОД
    СПЕЦІАЛЬНІСТЬ
    СУМА
    ТРИВАЛІСТЬ НА ДЕНЬ
    1
    ОБРАБОТКИ
    160
    1
    2
    МЕДИЧНЕ СЕСТРО
    150
    1.5
    3
    СЕКРЕТАРІАТ
    140
    2
    4
    TURISMO
    180
    2.5
    5
    ОБЛІК
    160
    1
    Ви повинні вказати спеціальність, яку вивчаєте, вартість пенсії, дефолт та загальну суму до сплати.

  13.   Шарлі - сказав він

    Привіт, хтось може мені допомогти?
    Мені потрібно «Запитати три слова за допомогою клавіатури та відобразити їх в алфавітному порядку від А до Я»
    Мовою Bash або sh для LINUX porfaborrrr