List

Wykorzystanie cydzysłowie:

  • ‘   oraz   ‘ – apostfory służą do łączenia zawartych w nim znaków jako jeden ciąg znaków. Jest to użyteczne np. przy przekazywaniu parametru pozycyjnego zawierającego znak specjalny – np. spację. Apostrof pozwala na wykorzystanie wszystkich znaków specjalnych z wyjątkiem samego apostrofa, któego nie można użyć nawet poprzedzając backslashem.
  • ”   oraz   ” – podwójny apostrof służy do łaczenia zawartych w nim znaków jako jeden ciąg znaków. Ciąg znaków zawarty w podwójny apostrof podlega przetwarzaniu i interpretacji przez bash przez co pozwala na skorzystanie ze znaków specjalnych.
  •    oraz    – pojedynczy apostrof odwrotnie skierowany służy do wykonania polecenia zawartego w nim oraz wstanie w miejsce wystapienia tych apostrofów standardowego wyjścia tego polecenia.

Instrukcja read

Instrukcja read służy do pobierania od użytkownika ciągu znaków i podstawienia go pod wartość zmiennej.

Instrukcja test

Polecenie test sprawdza zadany warunek i zwraca wartość true jeśli jest spełniony (tj. polecenie kończy się pomyślnie) oraz false gdy nie jest.
Struktura:

Test można również zapisać za pomocą dwóch nawiasów kwadratowych:

Jednoargumentowe na plikach:

  • -c plik – sprawdza czy plik jest urządzeniem znakowym
  • -b plik – sprawdza czy plik jest urządzeniem blokowym
  • -e plik – sprawdza czy plik istnieje
  • -f plik – sprawdza czy plik jest zwykłym plikiem
  • -d plik – sprawdza czy plik jest katalogiem
  • -L plik – sprawdza czy plik jest dowiązaniem symbolicznym

Jednoargumentowe na zmiennych:

  • -z $zmienna – sprawdza czy zmienna ma zerową długość
  • -n $zmienna – sprawdza czy zmienna ma niezerową długość

Dwuargumentowe na liczbowach:

  • $zmienna1 -lt $zmienna2 – kod powrotu 0 gdy zmienna1 jest mniejsza od zmienna2
  • $zmienna1 -le $zmienna2 – kod powrotu 0 gdy zmienna1 jest mniejsza lub równa od zmienna2
  • $zmienna1 -gt $zmienna2 – kod powrotu 0 gdy zmienna1 jest większa od zmienna2
  • $zmienna1 -ge $zmienna2 – kod powrotu 0 gdy zmienna1 jest większa lub równa od zmienna2
  • $zmienna1 -eq $zmienna2 – kod powrotu 0 gdy zmienna1 jest równa zmienna2
  • $zmienna1 -ne $zmienna2 – kod powrotu 0 gdy zmienna1 jest różna od zmienna2

Dwuargumentowe operacje na ciągach znaków

  • $zmienna1 == $zmienna2 – kod powrotu 0 gdy ciąg znaków zmienna1 jest równy zmienna2
  • $zmienna1 != $zmienna2 – – kod powrotu 0 gdy ciąg znaków zmienna1 jest różny od zmienna2

Uwaga:

W miejsce $zmienna1 i $zmienna2 bash wstawia wartość tych zmiennych, więc realnie wykonywane polecenia, to porównywanie wartości tych zmiennych. Z tego powodu, jeśli zmienna1 lub zmienna2 są puste, polecenie test zakończy się niepowodzeniem przez błąd składni.

Instrukcja if

Instrukcja if służy do sterowania warunkowego wykonaniem skryptu.
Struktura if:

Przykłady

Pętla for

Pętla for służy do iterowania po zadanych wartościach.
Może iterować po zadanych ciągach znaków:

Jako parametr ciągu znaków po którym ma iterować zmienna można podać polecenie podane w apostrofie:

Może również iterować po wartościach liczobowych:

W pętli for można również skorzystać z instrukcji break i continue

Pętla while

Pętla while służy do wykonywania zadanych operacji dopóki warunek wejściowy jest spełniony.
Struktura while:

W pętli while można skorzystać również z instrukcji break i continue:

Instrukcja case

Instrukcja eval

Instrukcja eval służy do zbudowania komendy i jej wykonania przez powłokę.

Poprzez zacytowanie znaków specjalnych eval może również korzystać ze zmiennych.

Program expr

Program expr służy do obliczania wartości arytmetycznych:

  Posts

May 20th, 2017

Different kernel types

https://en.wikipedia.org/wiki/Kernel_%28operating_system%29#Kernel-wide_design_approaches https://en.wikipedia.org/wiki/Unikernel https://en.wikipedia.org/wiki/Exokernel https://en.wikipedia.org/wiki/Nemesis_%28operating_system%29 http://windowsitpro.com/windows-server/top-ten-what-you-need-know-about-microsoft-nano-server

April 21st, 2017

Microsoft Roadmap for AzureStack

Microsoft’s Hyper-V looked really promising and it happened to be really good general purpose virtualization. Not it’s time for on-premise/hybrid […]

April 21st, 2017

Books reading :)

Mind development requires regular reading 🙂 Here are some advices: http://www.gq.com/story/how-to-read-a-whole-damn-book-every-week?mbid=synd_digg For me reading in the morning would be the best […]

October 25th, 2016

Linux – powłoka bash – skrypty 2

Wykorzystanie cydzysłowie: ‘   oraz   ‘ – apostfory służą do łączenia zawartych w nim znaków jako jeden ciąg znaków. Jest to […]

June 9th, 2016

Session data in Redis (with PHP exapmle)

Session data in Redis What is session Session is What is cookie Cookie is something you eat 🙂   How […]

June 7th, 2016

DSIK, DASL – Brama domyślna

Linux jako ruter Naszym celem będzie skonfigurowanie systemu linux jako urządzenia przesyłającego pakiety. W tym celu będziemy potrzebowali: uruchomić infrastrukturę (w […]

May 25th, 2016

How to change a hostname

Just a few easy steps: Manually update: /etc/hostname /etc/hosts it may be important to update some other files – see https://wiki.debian.org/HowTo/ChangeHostname […]

May 10th, 2016

Gartner Hype Cycle through last 10 years :)

I recently read about self driven cars and jumped into Gartner Hype Cycle term.   Brief introduction to the subject: […]

May 6th, 2016

Bug bounty program

I’ve recently heard about the Bug bounty idea – a program for rewarding IT geeks (with just recognition or even […]

April 26th, 2016

Is IBM’s Power8 powerful enough? :)

Recently I heard about Power8 platform designed “for Magento”.  Obviuosly, somebody from marketing had a great idea to ad the general platform […]

April 26th, 2016

DSIK – Zajęcia 8 – Raw Sockets

Surowe gniazda Na wcześniejszych zajęciach poznaliśmy metodę wykorzystywania funkcji systemowych do tworzenia nagłówków IP oraz warstwy TCP i UDP. Dzięki wykorzystanym funkcjom system automatycznie […]

April 25th, 2016

2016.04.25 – Etap 4

MedicaLibaro Paweł Banach, Rafał Pingot, Piotr Beczyński. Moodies Rafał Maszkowski, Mateusz Kulesza, Dawid Krawczyk.

April 24th, 2016

DSIK – Zajęcia 8 – Projekt – podział na grupy, wybór tematów

Wybrane grupy projektowe i przypisane tematy. Lista: Rutka, Sosnowski – serwer HTTP Nojnam, Ciuk – klient IRC Soprych, Macutkiewicz – […]

April 18th, 2016

DSIK – Zajęcia 0 – Plan zajęć.

Plan przedmiotu Zajęcia 1-8: Część zgodna z dotychczasowym harmonogramem. Wprowadzenie teoretyczne do warstwy 2 i 3. Diagnostyka sieci – polecenia. Gniazda […]

April 18th, 2016

DSIK – Zajęcia 7 – Projekt określenie wymagań

Zasady zaliczenia: projekt tworzy grupa 2 osobowa projekt obejmuje: napisanie programu: zaimplementowanie znanego protokołu (może być REST API, może być protokół […]

April 11th, 2016

DSIK – Zajęcia 5 – UDP, aplikacje socket bezpołączeniowe

Komunikacja bezpołączeniowa UDP (z ang. User Datagram Protocol – protokół  datagramów użytkownika) to bardzo lekki protokół umożliwiający przesyłanie komunikatów między klientem […]

April 7th, 2016

DSIK – Zajęcia 2 – Stos TCP/IP – Warstwa 3, polecenia diagnostyczne.

April 7th, 2016

DSIK – Zajęcia 6 – Sockety Unix.

Opis problemu Komunikacja sieciowa jest bardzo elastycznym elementem komunikacji, jednakże niesie za sobą narzut obliczeniowy w postaci obsługi stosu TCP/IP po […]

April 4th, 2016

DSIK – Zajęcia 4 – Nieblokujące programowanie gniazd.

Opis problemu Załóżmy, że napisaliśmy program działający jako serwer pewengo protokołu (np. xmpp), który oczekuje na komunikaty od użytkownika, ale […]

April 4th, 2016

DSIK – Zajęcia 4 – Aplikacje wielowątkowe

Aplikacje przetwarzające wiele wątków Rozważmy sytuację, gdy aplikacja serwera jest dostępna do publicznego użytku i potrzebuje np. 30 sekund ciągłych obliczeń […]

March 14th, 2016

DSIK – Zajęcia 3 – Sieci komputerowe – programowanie gniazd, wstęp (TCP klient i serwer).

Programowanie gniazd. Funkcje: ssize_t send(int sockfd, const void *buf, size_t len, int flags); – możliwość wykorzystnia tylko gdy socket jest […]

March 14th, 2016

DSIK – Zajęcia 1 – Stos TCP/IP – Warstwa 2, polecenia diagnostyczne.

Stos TCP/IP TCP/IP to rodzina protokołów stanowiących podstawę do komunikacji między komputerami w sieciach komputerowych. Do rodziny tej zaliczmy protokoły zapewniające adresowanie i […]