Втора част от това мини-урок програмиране в Тряскам, където се учим да използваме ciclos и други инструменти, които ще ни помогнат да подобрим функционалностите на нашите скриптове. |
Ако е условно
Функцията на If е да приложи филтър и да извърши операция или задача за всеки тип прилаган филтър. Неговата структура е следната:
Ако [състояние]; след това elif команди [условие]; след това команди else; команди fi
Пример е показан до цикъла For в съответния му раздел.
цикли
1. Докато: ще изпълнява всички команди, посочени между do и done, стига условието да е вярно. Ако искаме да му предадем оператори за сравнение, изразът трябва да е в скоби.
докато CONDITION / COMMAND изпълняват команди
Пример: таблица за умножение на число
#! / bin / bash X = 1 echo "Въведете число и натиснете ENTER" прочетете M # Цикълът контролира, че X е по-малко или равно на 10, докато [$ X –le 10] do #In R съхраняваме умножението на X по MR = $ [X * M] # Това умножение се отпечатва на ехото на екрана "$ M * $ X = $ R" # С let увеличаваме стойността на X с 1 единица, нека X = $ X + 1 готово
2. За: съхранява списък с елементи в променлива, която ще се използва за извършване на определени операции с всеки цикъл.
за VARIABLE в ELEMENTS се правят команди
Пример: програма, която копира файл от една папка в друга, заменяйки стар файл.
# / bin / bash # Установяваме директории с източник и дестинация ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Позиционираме се в cd източника $ ORIGIN # От всички файлове искаме само този, който е # извикайте FILE за FILE в * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f ни филтрира редовни файлове, тъй като директориите # нищо добро за нас. –Не филтрира # файла „по-нови“ от тези #, намерени в целевата папка, ако [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; след това ехо "Копиране на $ FILE ..." # копираме файла с cp cp $ FILE $ ARCH-DESTINATION fi готово #We cd за изход от папката cd
Друг пример: скрипт, при който потребителят трябва да отгатне произволно число, генерирано от компютъра.
# / bin / bash # Случайно число се генерира от 1 до 10, # се записва в СЛУЧАЙНА СЛУЧАЙНА = $ [$ СЛУЧАЙНА% 10 + 1], докато [1] do echo –n "Въведете число:" прочетете NUM # Сравнете дали избраният от потребителя номер е #equal to RANDOM; не забравяйте да използвате $ за оценка на # стойностите на променливите, а не имената им, ако [“$ 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.
изберете VARIABLE в СПИСЪК на изпълнените команди
Пример: дайте на потребителя възможност да продължи или да прекрати скрипта.
#! / bin / bash #item е променлива, която отговаря на това, което # потребителят избере, Продължи и Завърши са # опциите, достъпни за него, въпреки че могат да се добавят други опции # още изберете елемент в Продължи Завърши направете # Ако потребителят избере приключете програмата, след което с почивка излизаме от цикъла. ако [$ item = "Finish"]; след това прекъснете fi готово
Мисля, че нещо подобно: tar -cf - Directory | (cd / other / directory; tar -xvf -)
Тогава ще изглежда като / друга / директория / Директория
По този начин аз компресирах директория и вие я декомпресирате на друго място ....
Здравейте, добър преподавател, уча по темата и всичко е наред, само че не успях да направя програма, която да ми помогне, за да видя дали можете да ми помогнете, моля.
Трябва да направя цикъл, в който той ще получи като параметри списък на изходен файл, този списък носи само имена (без разширение), така че цикълът прави следното, потърсете споменатото име, получено в директория (която е тази, която ще търсим) , извлечете и копирайте файла (пълното име вече с разширение) и абсолютния път и го създайте в друг целеви файл.
Засега имам следното:
докато четете ред
do
echo -e "$ line"
find / home / myuser / dof "$ line" -exec readlink -f {};
готово <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" в
1)
ехо "Избрахте опция 1"
;;
2)
echo "Избрахте опция 2"
;;
3)
изхвърли "... .."
;;
4)
изхвърли "..."
;;
5)
изхвърли "..."
;;
*)
ехо "грешен вариант"
;;
ESAC
добре това, което не знам как да направя е, че когато избера опция 4, която трябва да излезе, попитайте дали наистина искам да изляза и ми дайте 2 опции Y & N
а другото е, че когато изберете нещо различно от цифрите 1..5, не гласувайте за мен от скрипта ....
Бихте ли ми помогнали благодаря.
Здравейте, започнах да правя скриптове преди 1 месец и благодарение на публикациите ви в скриптове. Ще направя около 15-20. Благодаря много предварително. Но сега нашият учител ни даде работа, на която станах в застой. Тъй като учителят пита:
предавайки директория, копирайте в дома си всички файлове, които са в нея, по азбучен ред и ги именувайте file1 file2 и т.н. ... и т.н.
Сега съм в момента на намиране или намиране, исках да използвам find, но когато му дадох код за грешка, докато го пуснах през dev null, разрешенията, отказани, тогава греша и поставям locate, който съм тук:
намерете $ 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