Програмиране в bash - част 1

Въпреки че обикновено го използваме за административни операции или операции за управление на файлове, комфорт de Linux разширява своята функционалност далеч отвъд тази цел, позволявайки ни да програмираме скриптове Това ръководство не е предназначено да бъде пълна справка за програмирането на Bash, а по-скоро въведение в основните команди и структури, което ще ни позволи да разширим мощта на нашата система GNU / Linux.

Какво е "скрипт"?

По принцип казваме, че това е файл, който съдържа код, написан на определен програмен език, който системата използва за определена задача. Не е необходимо да има външен вход или графичен интерфейс, но трябва да предизвика изход на обработени данни (дори ако потребителят не ги вижда).

Езикът, използван от Bash, се дефинира от собствения му интерпретатор и комбинира синтаксиса на други черупки, като например оболочка Korn (ksh) или C Shell (csh) Много от командите, които обикновено се използват в конзолата, могат да се използват и в скриптове, с изключение на тези, които се отнасят стриктно до определена дистрибуция.

Структура на скрипт

За начало трябва да имаме текстов редактор и желание за програмиране. Файловете, които запазваме с разширение .sh, могат да бъдат изпълнени (или интерпретирани) от конзолата, стига първият ред да е следният:

#! / Хамбар / Баш

Това казва на системата да използва конзолата за стартиране на файла. Освен това знакът # ви позволява да пишете коментари. За да създадем най-простия пример, добавяме още един ред, видян на следното изображение:

Командата echo показва съобщение на екрана, в този случай типичното "Hello world!" Ако го запазим и изпълним с конзолата, ще видим резултата.

Основни команди

Следните команди са често срещани и много полезни за всеки тип програма. Поясняваме, че има много повече, но засега ще разгледаме следното.

Псевдоними: позволява низ от думи да бъде заменен с по-кратък, което позволява намаляване на кода.

#create псевдоним, извикан на адрес с адреса на #Downloads псевдоним на папката = = / home / user / Downloads '# Всеки път, когато искаме да го използваме, просто трябва да извикаме # новата дума на # използвайте unalias unalias per

break: позволява незабавно да излезете от for, while, докато или изберете цикъл (ще проучим подробно циклите по-късно)

# Създайте цикъл, който ще присвои числата от 1 до 5 # за всеки "завъртане на цикъла" за брояч в 1 2 3 4 5 do # Отпечатваме текущата стойност на променливата #counter, която се анализира от символа $ echo "$ counter" # Ако стойността на брояча е равна на 3, ако [$ counter –eq 3], тогава #The break излиза от цикъла за прекъсване fi

continue - Подобно на break, с изключение на това, че игнорира текущия цикъл и преминава към следващия.

# Създайте цикъл, който ще присвои числата от 1 до 5 # за всеки "завъртане на цикъла" за брояч в 1 2 3 4 5 направете # Ако стойността на брояча е равна на 3, ако [$ counter –eq 3] тогава # Продължи предотвратява анализирането на останалата част от цикъла #current чрез прескачане към следващия кръг, т.е. #value 3 няма да бъде отпечатана. продължи fi echo "$ брояч" направено

декларира: декларира променливи и им присвоява стойности, точно както typeset (те работят по същия начин). Можем да го комбинираме с някои опции: -i декларира цели числа; -r за променливи само за четене, чиято стойност не може да се променя; –A за матрици или „масиви“; -f за функции; -x за променливи, които могат да бъдат "експортирани" извън средата на самия скрипт.

декларирам –i num = 12 декларирам –x pi = 3.14

help: показва помощ за конкретна команда.

Jobs: показва текущите процеси.

# С –c показваме името на командите, с –p # pid (идентификатор на процеса) на всеки процес. работни места -cp

нека: изчислява аритметичен израз

нека a = 11 нека a = a + 5 # Накрая отпечатваме стойността на a, която е 16 echo "11 + 5 = $ a"

local: създава локални променливи, които трябва да се използват за предпочитане във функциите на самия скрипт, за да се избегнат грешки. Можете да използвате същите функции като командата за деклариране.

local v1 = "Това е локална променлива"

изход: позволява излизане от Shell напълно; полезно за случаите, когато работим с повече от един прозорец на Shell, в който командата за излизане позволява само един прозорец да бъде прекратен наведнъж.

printf: позволява ви да отпечатвате данни и да ги форматирате. Има много опции, затова ще споменем няколко.

#% f отпечатва като плаващо число, n за нов # ред за печатf "% fn" 5 5.000000 # & d позволява да се предават десетични числа като аргументи printf "Има% d поръчки, оценени в% d долара.n" 20 500 Има 20 поръчки на стойност 500 долара.

четене: чете ред от стандартен вход (модул, използван за зареждане на данни чрез клавиатурата например). Можем да предадем опции като: -t, за да дадем ограничено време за четене; -а така, че всяка дума да се присвоява на позиция в масива на анама; -d да се използва разделител, който да се напише в края на реда; наред с други.

echo "Въведете името си и натиснете ENTER" # Прочетете името на променливата read name echo "Вашето име е $ name"

type: описва команда и нейното поведение. Може да бъде полезно да разберете дефинициите на данни за всяка команда.

type –a '[' #type ни казва, че [е вградена команда на Shell [е вградена Shell # -a позволява намирането на директории, които съдържат # изпълним файл с въведеното име. [е / usr / bin / [

ulimit: ограничава достъпа и използването на определени системни ресурси до процеси, идеални за програми, които позволяват административни промени или които са ориентирани към различни типове потребители. Когато задаваме ограничение, ние пишем число, което представлява килобайтите на ограничението.

# Виждаме нашите текущи ограничения ulimit –a # -f позволява на ограничаващите потребители да не могат да # създават файлове, по-големи от 512000 Kb (500 #Mb) ulimit -f 512000 # -v, ограничава виртуалната памет на процеса. ulimit –v 512000

изчакайте: изчакайте да продължи определен процес или работа, за да продължи.

# Скриптът чака да се извърши процесът на pid # 2585

изчакайте 2585

Други полезни команди, които можем да добавим към скриптове, са представени със символи.

!!: стартирайте последната команда отново

! wer: изпълнява последната команда, започнала с израза “wer”.

'==', '! =', '>', '<', '> =' и '<=': релационни оператори.

|: Операторът OR обикновено се използва за обединяване на два регулярни израза.

: escape команда, която ви позволява да форматирате изрази. Например: a за звуково предупреждение, n за нов ред, b за backspace и т.н.

Благодаря ти Хуан Карлос Ортис!

Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

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

      Средно Труден каза той

    Страхотен! Както и да е, 2 коментара: Ubuntu тагът е наполовина твърде много, тъй като обобщава нещо, което е родово. И ако тези уроци продължават да напредват, би било добре, ако са свързани помежду си ...
    Освен това, този ход е интересен!

      Нека използваме Linux каза той

    Добър принос! Страхотен!

      Джовани Ескобар Соса каза той

    Липсват само препоръки за тези, които искат да влязат повече в въпроса. Някои добри, макар и не толкова лесни за намиране в нашите страни, са
    - Практическо ръководство за Linux команди, редактори и програмиране на черупки, Марк Собел (Глава 8)
    - Pro Bash Programming, Chris FA Johnson (въпреки че това е за тези, които имат други препоръки или малко повече знания).

    Добра статия.

      Нека използваме Linux каза той

    Хубава среща! Благодаря ти!

      Патрисио Дорантес Джамарне каза той

    : @ Функцията „влез като“ изтри предишния ми коментар, така че ще го обобщя допълнително:
    работни места -cp
    bash: jobs: -c: невалидна опция
    Jobs: употреба: Jobs [-lnprs] [jobspec…] или команда -x команда [аргументи]

    -eq -gt -lt не приемат променливи с десетична запетая, между форум и форум открих, че bc е добър съюзник:
    ако [`ехо 9.999> 10 | bc` -eq 1]; тогава
    echo „9.999 10 е по-голямо от XNUMX, уверете се, че процесорът ви все още работи“
    още
    echo «9.999 10 не е по-голямо от XNUMX, всичко работи нормално
    fi

      Не от Бруклин каза той

    Тази публикация обобщава много добре всички общи характеристики на bash скриптове:
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    На този сайт ще намерите много въпроси и отговори за особеностите на bash:
    http://unix.stackexchange.com/questions/tagged/bash

    Ето някои наистина страхотни скриптове и хей, можете да ги научите, като прочетете скриптове на други хора:
    http://snipplr.com/search.php?q=bash&btnsearch=go

      Не от Бруклин каза той

    Прав си с това, което казваш, с изключение на bash. Всяка система, която съм виждал, има bash в / bin / bash.

    Но за python, perl, ruby ​​и т.н. е добре да го използвате. правя го

      Гуиле каза той

    По случайност в колежа използваме bash скриптове, така че данните са 10, много добри!

      Алекс VI каза той

    PDF версия за изтегляне би била добра !! 😀

      Марко Антонио де Фуентес каза той

    Много добър сайт. Най-накрая намерих нещо полезно. Благодаря ти.