Часть вторая Это мини-учебник программирование в Колотить, где мы учимся использовать циклы и другие инструменты, которые помогут нам улучшить функциональность наших скрипты. |
Условное условие If
Функция If заключается в применении фильтра и выполнении операции или задачи для каждого типа примененного фильтра. Его структура следующая:
Если [условие]; затем команды elif [условие]; затем команды else; команды fi
Пример показан рядом с циклом For в соответствующем разделе.
Циклы
1. Пока: он будет выполнять все команды, указанные между do и done, пока выполняется условие. Если мы хотим передать ему операторы сравнения, выражение должно быть в скобках.
в то время как CONDITION / COMMAND выполняет команды
Пример: таблица умножения числа
#! / bin / bash X = 1 echo "Введите число и нажмите ENTER" read M # Цикл определяет, что X меньше или равно 10, а [$ X –le 10] do # В R мы сохраняем умножение X на MR = $ [X * M] # Это умножение выводится на экран echo "$ M * $ X = $ R" # С let мы увеличиваем значение X на 1 единицу let X = $ X + 1 done
2. For: хранит список элементов в переменной, которые будут использоваться для выполнения определенных операций с каждым циклом.
для ПЕРЕМЕННОЙ в ЭЛЕМЕНТАХ выполняйте команды
Пример: программа, которая копирует файл из одной папки в другую, заменяя старый файл.
# / bin / bash # Мы устанавливаем исходный и целевой каталоги ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Мы позиционируем себя в исходном cd $ ORIGIN # Из всех файлов нам нужен только тот, который # вызовите FILE для FILE в * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f фильтрует обычные файлы, # поскольку каталоги для нас бесполезны. –Nt отфильтровывает # файлов «новее», чем # найденные в папке назначения, если [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; затем echo "Copying $ FILE ..." # копируем файл с помощью cp cp $ FILE $ ARCH-DESTINATION fi done # Мы cd для выхода из исходной папки cd
Другой пример: сценарий, в котором пользователь должен угадать случайное число, сгенерированное компьютером.
# / bin / bash # Генерируется случайное число от 1 до 10, оно # сохраняется в RANDOM RANDOM = $ [$ RANDOM% 10 + 1], а [1] do echo –n "Введите число:" прочтите NUM # Сравните, если выбранное пользователем число # равно СЛУЧАЙНОМУ; не забудьте использовать $ для оценки # значений переменных, а не их имен if [«$ NUM –eq« $ RANDOM »]; затем эхо "Вы поняли!" #break позволяет завершить цикл при остановке # Если число меньше RANDOM elif [«$ NUM –gt« $ RANDOM »]; then echo "Это меньше" "Если нет, то больше, чем RANDOM else echo" IS больше "fi done
3. До: очень похожа по структуре на While, за исключением того, что код всегда выполняется, пока оценка условия отрицательна, то есть программа продолжает выполнение «до тех пор, пока не произойдет условие».
пока УСЛОВИЕ / КОМАНДА не выполнят команды
Пример: выведите числа 10-20 в порядке убывания
#! / bin / bash CONT = 20 # Пока счетчик меньше 10 (-lt, «меньше # чем»), код выполняется до [$ CONT -lt 10]; do echo "COUNTER $ CONT" #A CONT вычитается на единицу let CONT- = 1 done
4. Выбор: этот последний цикл - особый случай, поскольку он обычно используется для быстрого создания меню. Он работает аналогично циклу For.
выберите ПЕРЕМЕННАЯ в СПИСКЕ выполненных команд
Пример: дать пользователю возможность продолжить или завершить сценарий.
#! / bin / bash #item - это переменная, которая реагирует на то, что # выбирает пользователь, Continue и Finish - это доступные ему # опции, хотя могут быть добавлены другие опции # more select item in Continue Finish do # Если пользователь выбирает завершаем программу, затем с перерывом выходим из цикла. если [$ item = "Готово"]; тогда перерыв готов
Думаю примерно так: tar -cf - Directory | (cd / другой / каталог; tar -xvf -)
Тогда это будет выглядеть как / другой / каталог / Каталог
Таким образом я сжал каталог, а вы распаковали его в другом месте….
Привет, хороший урок, я изучаю этот предмет, и все в порядке, только я не смог сделать программу, которая мне поможет, чтобы посмотреть, можете ли вы мне помочь.
Мне нужно выполнить цикл, в котором он получит в качестве параметров список исходного файла, указанный список содержит только имена (без расширения), так что цикл выполняет следующие действия: ищите указанное имя, полученное в каталоге (который мы будем искать) , извлеките и скопируйте файл (полное имя уже с расширением) и абсолютный путь и создайте его в другом целевом файле.
Пока у меня есть следующее:
пока читаешь строку
do
echo -e "$ линия"
найти / home / myuser / dof "$ line" -exec readlink -f {};
done <testlist.txt Пока я читал файл, каждую его строку, но я не могу заставить его искать этот файл и извлекать информацию, если вы можете мне помочь, пожалуйста, спасибо. Ура
Большое спасибо за вклад 🙂
привет ... Надеюсь, вы сможете помочь в следующем упражнении ... Разархивируйте файл в формате tgz в указанном каталоге, в дополнение к указанию пользователя и группы для всех существующих каталогов и файлов, и назначьте разрешения для файлов и каталогов
примечание: файлы готовы к чтению и записи
разрешение на выполнение каталогов
ARCH-DESTINATION - это переменная, в которой мы хотим сохранить путь к файлу назначения, простите за избыточность. Затем к этой переменной мы указываем переменную DESTINATION, которая выше содержит путь к папке Documents, и добавляем «переменную» FILE, которая содержит имя файла. Если бы этот файл был, например, list.doc, переменная ARCH-DESTINATION была бы равна /home/Usuario/Documentos/listado.doc
Это предыдущая статья. Вы можете получить к нему доступ на http://usemoslinux.blogspot.com
Объятие! Павел.
Доброе утро, приятель, просто спасибо, очень хорошо твой блог, но я не могу получить первую часть программирования в Bash, где я получил это спасибо, привет
Две необычные части, мои искренние поздравления.
Просто великолепно.
Bien
Здравствуйте, я делаю программу с CASE, что я хочу, и я не знаю, как, например:
echo Выбирает вариант:
эхо
эхо 1. вариант 1
эхо 2. вариант 2
эхо 3. вариант 3
эхо 4. вариант 4
эхо 5. Выход
читать var
case "$ var" в
1)
echo "Вы выбрали вариант 1"
;;
2)
echo "Вы выбрали вариант 2"
;;
3)
выбросил "….."
;;
4)
выбросил "…."
;;
5)
выбросил "…"
;;
*)
echo "неправильный вариант"
;;
ESAC
хорошо, что я не знаю, как это сделать, это когда я выбираю вариант 4, который должен выйти, спрашиваю, действительно ли я хочу выйти, и предлагаю мне 2 варианта ДА и НЕТ
а другая - когда вы выбираете что-то другое, кроме чисел 1..5, не голосуйте за меня из сценария….
Не могли бы вы мне помочь, спасибо.
Привет, я начал писать сценарии 1 месяц назад и благодаря вашим сообщениям о сценариях. Я сделаю около 15-20 штук. Заранее большое спасибо. Но теперь наш учитель дал нам работу, от которой я стал стагнировать. Поскольку учитель спрашивает:
передавая каталог, скопируйте в свой дом все файлы, которые находятся в этом каталоге в алфавитном порядке, и назовите их file1 file2 и т.д ... и т.д ...
Теперь я нахожусь в момент поиска или определения местоположения, я хотел использовать find, но, давая ему код ошибки, когда я помещал его через dev null, разрешения отклонены, тогда я ошибаюсь и помещаю местоположение, которое я здесь:
найти $ 1 | grep "/ $ {1} \ $"
но конечно с этим все выходят ...
Большое спасибо, если вы это прочитали.
Если вы можете мне помочь, это будет большим одолжением.
Я бы хотел, чтобы вы мне в этом помогли.
1.-Введите целое число на клавиатуре и отобразите дважды и утроите это число на экране. 2.- Сделайте программу, чтобы решить, делится ли число, введенное с клавиатуры, на 3 или нет.
3.- Сделайте программу, чтобы найти сумму: ???????? + ???????? + ???????? + ???????? +? ???????
4.- Составьте программу, чтобы найти сумму 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
5.-Сделать программу, которая печатает слово Linux на экране 10 раз
6.-Сделайте программу, которая печатает слово Linux на экране количество раз, указанное пользователем.
7.-Введите количество в часах и преобразуйте их в минуты и секунды.
8.-Рассчитайте площадь треугольника
9.-Введите число с клавиатуры, затем, если вы введете 2, оно должно быть возведено в квадрат, 3 в кубе, 4 до четвертого и так далее до 6.
10-Рассчитайте пенсию, которую должен платить студент, введите код специальности и просроченные дни:
КОД
СПЕЦИАЛЬНОСТЬ
КОЛИЧЕСТВО
ЗА ДЕНЬ
1
ВЫЧИСЛЕНИЕ
160
1
2
Уход
150
1.5
3
СЕКРЕТАРИАТ
140
2
4
ТУРИЗМ
180
2.5
5
АНАЛИТИЧЕСКАЯ
160
1
Вы должны указать специальность, которую изучаете, размер пенсии, размер пенсии по умолчанию и общую сумму, подлежащую выплате.
Здравствуйте, кто-нибудь может мне помочь?
Мне нужно «Запросить три слова с клавиатуры и отобразить их в алфавитном порядке от А до Я»
На языке Bash или sh для LINUX porfaborrrr