за сигурен nuestros концепции Ще научим 2 много полезни инструмента за програмиране, които работят перфектно в Bash. Научете се да създавате funciones и дефинирайте тръбопроводи в началото може да изглежда сложно, но след това ще видим огромното utilidad че ни предоставят. |
Тръби
По-конкретно, и без да се правят твърде много завои, конвейерът е метод, който позволява насочването на изхода на един процес като вход на друг, което позволява редица предимства, като например намаляване на редовете на кода, освобождаване от променливи за съхранение за резултати и подобряване ефективността на сценария.
Тръбата обикновено се разпознава, като има символа | което позволява да се свързват изрази; Въпреки че се използва по подразбиране, има и други начини за създаване на тръби.
Пример: отпечатайте последните съобщения на ядрото
#dmesg ви позволява да видите последните съобщения на ядрото и заредени драйвери # по време на зареждане на системата; tail отпечатва последните части на файл или #command
dmesg | опашка
Въпреки че могат да бъдат усложнени колкото искаме, основната структура на конвейера позволява резултатът от една команда да се използва като вход за следващата, която може да осигури въвеждането на нова команда, ако продължаваме да добавяме последователни тръби.
функции
Функциите са набор от изрази, които са групирани заедно, така че да могат да бъдат изпълнени няколко пъти, без да се налага да ги пренаписвате. Еквивалентно е на мисленето, че когато се научим да готвим даден вид храна, ще напишем рецептата й на лист и всеки път, когато искаме да готвим тази храна, се консултираме с рецептата, вместо да пренаписваме нов лист със същата рецепта.
Може би най-важното нещо за функциите е възможността за предаване на параметри, данни, които те ще използват, за да ги обработят и генерират изход. Неговата структура е следната:
функция функция-име {
процеси
}
Пример: функция, която показва услугите, които работят по протокола tcp. Можем също така да видим как да приложим повече тръби.
# Определяме име на функция, може да е това, което ни харесва.
функция services_tcp {
#cat обединява и показва съдържанието на папката / etc / services, която е #, която съдържа всички услуги със свързаните с тях портове.
# първият grep взема списъка и премахва коментарите, като –v обръщаме резултата
# вторият grep показва само тези, свързани с tcp
котка / и т.н. / услуги | grep –v "^ #" | grep tcp
}
Когато трябва да изпълним тази функция, просто трябва да я извикаме с нейното име:
tcp_services
В този случай работи без параметри; В случай, че ги има, трябва да ги добавим, така че функцията да работи правилно, в противен случай функцията няма да работи правилно. Използването на return позволява на функцията да върне стойност в резултат на процеса.
Пример: функция с входни параметри, която изчислява сумата от 2 числа.
#! / Хамбар / Баш
функционална сума ()
{
# с нека можем да изпълним операцията вътре в кавичките
нека "резултат = $ 1 + $ 2"
#return позволява да се върне целочислената стойност. След като връщането бъде изпълнено, стойността ще бъде депозирана вътре в променливата $?
върнете $ резултат;
}
# Извиква се функцията sum и ние предаваме 2 входни параметъра.
добавете 2 3
# отпечатва стойността на $? с ехо, оценяващо действителната стойност на променливата в кавички
echo -e "Резултат = $?";
Не съм сигурен, но операторът return на функциите служи само за връщане на цяло число между 0 и 255, като кодовете за грешки на "изход", обикновено 0, ако всичко е наред и друго число за останалите случаи. Въпреки че в примера това работи, не мисля, че е добра практика връщането на резултата с връщане.
Там казвам глупости, а! око! ха!
Истината ме остави със съмнение. Във всеки случай, за да избегнем проблеми с функциите, можем да заменим връщането с ехо, в случай че функцията се стреми да върне или отпечата стойност или низ.
Вярно е, че за да разрешите това, можете да използвате командата bc, във функцията за сумиране можете да използвате: result = `echo $ 1 + $ 2 | bc -ql`
добър,
Бих искал да знам къде мога да запазя bash файловете, така че да стартират цялата система и това не е bin директорията, но може да бъде дом за архивиране.
Благодаря и поздрави
Благодаря ви много, започвам със скриптовете и истината е, че това е много полезно, вие сте много любезен, споделяйки знанията си!
поздрави
Благодаря ти! Прегръдка!
Пабло
Синтаксична грешка: "(" неочаквано
Получавам грешка при опит за стартиране на примера, копирах го точно по същия начин
Какво може да бъде? аз съм на ubuntu 14.10