Програмування в 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 зроблено
Дякую Хуану Карлосу Ортісу!

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

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

*

*

  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