Czas już najwyższy na przykład: "Napisz program który wypisze słowo podane w parametrze, obecny czas oraz nazwę użytkownika uruchamiającego skrypt"

Podobne dokumenty
Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

System operacyjny Linux

Skrypty powłoki w systemie Linux

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Pracownia Komputerowa wykład III

1 Przygotował: mgr inż. Maciej Lasota

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Technologie Informacyjne - Linux 3

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

- wszystkie elementy - wszystkie elementy

Wstęp do Informatyki dla bioinformatyków

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

Środowisko programisty Zestaw 7

1 Podstawy c++ w pigułce.

Systemy operacyjne. Programowanie w shellu: BASH. Wydział Inżynierii Metali i Informatyki Przemysłowej

pico mojskrypt bash mojskrypt chmod +x mojskrypt./mojskrypt

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Systemy operacyjne 11

Programowanie skryptów powłoki

Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Programowanie w BASH u Skrypt do ćwiczeń

Podstawy programowania w Bash'u

Interpreter poleceń oraz zmienne środowiskowe

Wprowadzenie do programowania w powłoce

Powłoka bash. Kurs systemu Unix 1

4. Funkcje. Przykłady

Kurs pisania skryptów w powłoce BASH

POPULARNE POLECENIA SKRYPTY. Pracownia Informatyczna 2

Powłoka interpreter poleceń systemu UNIX

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

Tworzenie skryptu: Skrypty powłoki

1 Podstawy c++ w pigułce.

Bash i algorytmy. Elwira Wachowicz. 20 lutego

12. Skrypty w Linux - funkcje, instrukcje sterujące i obliczenia arytmetyczne

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

7. Pętle for. Przykłady

Strona1. Linux. Skrypty powłoki

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Programowanie - instrukcje sterujące

Bash - instrukcje warunkowe, pętle i funkcje

Ćwiczenie nr 14: System Linux

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

Część 4 życie programu

PRACOWNIA INFORMATYCZNA CHARAKTERYSTYKA PRZEDMIOTU BASH - PODSTAWOWE INFORMACJE

Oczywiście plik musi mieć rozszerzenie *.php

Architektura systemów informatycznych. Powłoka systemowa Architektura procesora

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

1. Wypisywanie danych

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Laboratorium Ubuntu Linux.

Wstęp do Programowania, laboratorium 02

Podstawy programowania skryptów Sh

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Podstawy Programowania C++

Instrukcja SO powłoka BASH i skrypty powłoki Istotne jest zrozumienie działania narzędzia history powłoki BASH. Każde polecenie wprowadzone i

BASH - WPROWADZENIE Bioinformatyka 4

JAVAScript w dokumentach HTML (1)

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Trochę o plikach wsadowych (Windows)

Pracownia Komputerowa wykład III

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

PODSTAWY INFORMATYKI

Zmienne środowiskowe: Ścieżka przeszukiwana komendą.

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Pętla for. Wynik działania programu:

Powłoka (shell) Powłoka ksh

Cw.12 JAVAScript w dokumentach HTML

Umieszczanie kodu. kod skryptu

Warunki i pętle. Instrukcja warunkowa if. Przykład zastosowania.

ZMIENNE. Podstawy PHP

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

1 Wielokrotne powtarzanie tych samych operacji

skrypt powłoki to plik tekstowy, rozpoczynający się sekwencją: pierwsza linia określa powłokę, w której wykonywany jest skrypt; druga to komentarz

PHP: bloki kodu, tablice, obiekty i formularze

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Zadeklarowanie tablicy przypomina analogiczną operację dla zwykłych (skalarnych) zmiennych. Może zatem wyglądać na przykład tak:

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Programowanie obiektowe i C++ dla matematyków

3. Instrukcje warunkowe

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

ECDL Podstawy programowania Sylabus - wersja 1.0

2.5 Podstawy programowania w bash'u

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Języki skryptowe w programie Plans

Język C - podstawowe informacje

#!/bin/sh. if [ "$#"!= "1" ]; then echo "Skrypt uruchamiany z parametrem (sciezka do katalogu)" exit 1 fi

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

do MATLABa programowanie WYKŁAD Piotr Ciskowski

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski

Języki programowania zasady ich tworzenia

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Transkrypt:

Tworzenie, uruchamianie, podstawy - skrypty Skrypty to, krótko mówiąc, programy czytane przez interpreter linijka po linijce, nie wymagające kompilacji. Skrypty pisze się szybko, skrypty są krótkie, skrypty ułatwiają życie. Jak utworzyć sobie skrypt? touch skrypt //tworzymy pusty plik chmod +x skrypt //dodajemy możliwość wykonania (+x) do pliku A jak taki skrypt odpalić?./skrypt A teraz pokrótce jak napisać skrypt: Po pierwsze potrzebujemy programu który wykona nasz skrypt (interpreter). Dlatego też, w pierwszej linijce musimy go wskazać, w dzisiejszych czasach będzie to: #!/bin/bash Czyli podstatwowa powłoka systemu. Dodam jeszcze, że wszystko napisane po '#' do końca linii jest komentarzem. Czas już najwyższy na przykład: "Napisz program który wypisze słowo podane w parametrze, obecny czas oraz nazwę użytkownika uruchamiającego skrypt" #!/bin/bash echo $1 date +%H:%M:%S whoami Linia pierwsza (przy cichym typowym dla informatyków założeniu, ze numerujemy od 0) zwraca nam pierwszy parametr jaki dostal skrypt ("$1"). Druga linia to odpowiednio sformatowana data (godzina:minuta:sekunda). Trzecia linia to whoami - czyli "kim jestem" - polecenie które zwaraca nazwę zalogowanego usera. Co to znaczy że skrypt dostał parametr? No np../skrypt parametr1 parametr2 Skoro pierwszy parametr ukrywa się pod zmienną $1 to łatwo jest się domyślić, że reszta parametrów jest trzymana w zmiennych: $2, $3 itd. Jeżeli parametr nie istnieje to pod daną zmienną nic nie ma. A co jest w $0? Ano w $0 jest nazwa skryptu (i sposób jego wywołania). Czyli np. #!/bin/bash echo $0 Da nam:./skrypt #[ENTER]./skrypt 1

Jakie są jeszcze inne przydatne zmienne 'wbudowane'? $* - wypisze wszystkie parametry naraz $$ - zwróci numer procesu (PID) $# - zwróci ilość podanych parametrów Zmienne i operacje na zmiennych Jak działają w ogóle zmienne w tych skryptach? Wygląda to tak: Deklaracja/przypisanie: TEKST="dupa" LICZBA=666 PI=3.14 Wywołanie: echo $TEKST echo $LICZBA+$PI No i fajnie jest, ale co poniektórzy zauważą że $LICZBA+$PI nie da nam "669.14" lecz "666+3.14". Krótko mówiąc bash preferuje stringi. Słabo mu idzie liczenie, zaokrąglenia, składania obliczeń arytmetycznych jest mało przyjazna. Ale to tylko dlatego, że takie operacje nie są w praktyce prawie w ogóle potrzebne. Ale jezeli już trzeba... : JEDEN=222 DWA=444 echo $[ $JEDEN + $DWA ] #zwroci 666 echo $[ $JEDEN + 111 ] #zwroci 333 WYNIK=$[ JEDEN + DWA ] Jak widać, mało przyjaźnie. W ostatniej linijce jak łatwo się domyślić pod zmienną WYNIK została przypisana liczba 666. Rozpoznawane operacje arytmetyczne to: +, -, *, / ** - potęgowanie % - modulo ++ - pre i post inkrementacia / dekrementacja +=, -=, /= *= i operacje logiczne Należy pamietać o tym, że bash nie wykona niczego na liczbach zmiennoprzecinkowych (potraktuje je jako tekst). Kto nie bawił się wcześniej językami w stylu php, tego może dziwić, że bashowi wszystko jedno czy pod zmeinną jest string czy liczba. Wbrew pozorom jest to bardzo wygodne. Można kleić ze sobą wyrazy, zmienne tekstowe i liczbowe bez żadnych konwersji/rzutowań. JEDEN="du" 2

DWA="mny" TRZY="pa" CZTERY="n" PIEC=666 echo $JEDEN$DWA $TRZY$CZTERY #dumny pan echo $JEDEN$TRZY #dupa echo $JEDEN-$PIEC-$TRZY! #du-666-pa! Niektóre symbole (jak np '_') moga być wykorzystane w nazwie wiec trzeba na nie uwazac. Jezeli koniecznie chcemy je wypisac to tradycyjnie stostujemy \ (backslash). JEDEN="du" PIEC=666 echo $JEDEN_$PIEC # niepoprawnie - Bash bedzie szukal zmiennej $JEDEN_ (a takiej nie ma) echo $JEDEN\_$PIEC #poprawnie - wypisze: du_666 UWAGA! Popularny bład: JEDEN = 123 #zle - nie moze byc spacji pomiedzy znakiem = DWA=23 #dobrze Mało popularna, ale niekiedy przydatna jest możliwość pobrania danych od użytkownika już w trakcie działania skryptu (a nie jako parametr). echo Wpisz tekst: read TEST echo Napisałeś: echo $TEST Warunki Zacznijmy od if..then..elsa. Przykład: IF [ $# -le 2] ; THEN echo "Mniej niż 3 parametry" ELSE echo "3 parametry albo nawet więcej" FI Słowa kluczowe początkowo będą pisane dużymi literami dla poprawienia czytelności. Teraz śmieszna rzecz: warto zauważyć że polecenie IF jest zakończone swoją odwrotnąścią FI. Podobnie jest z kilkoma innymi poleceniami blokowymi. Druga rzecz, dziwne porównywanie. Oj dziwne - uważajcie na spacje, nawiasy i średniki które muszą być tak jak to jest w kodzie powyżej. Samo porównanie to '-le' znaczy 'less or equal' - mniejszy lub równy. Zaraz sobie wypiszemy część możliwości porównywania. Jak widzimy ilość 3

argumentów ($#) jest porównywana z liczbą 2 i na podstawie wyniku mogą zostać wypisane dwa rózne teksty. Możliwe jest oczywiście pominięcie kawałka z ELSE albo dodanie (ile chcemy) ELIF [ warunek ]; THEN. Krótko o dostępnych warunkach: Inty można porównywać na dwa sposoby: standardowo = (albo == - tutaj to jest to samo),!=, <, >, <=, >= używając takiego zapisu IF (($# < 2)); THEN echo "mniej niz 2" ELIF (($# > 2)); then echo "wiecej niz 2" ELSE echo "dwa" FI albo mniej standardowo(odpowiednio do tych na górze): -eq, -ne, -lt, -gt, -le, -ge używając takiego zapisu: IF [ $# -lt 2 ]; THEN echo "mniej niz 2" ELIF [ $# -gt 2 ]; then echo "wiecej niz 2" ELSE echo "dwa" FI Do stringów mamy: = (i == - tutaj to samo),!=,. <, >, -z (czy jest NULLem), -n (czy nie jest NULLem) Z plikami można robić mi. -e (sprawdza czy dany plik istnieje) Mamy jeszcze CASEa działa to tak: CASE $1 IN dupa) echo "Ale brzydko napisales" ;; 1) echo "Uczen bez jedynki to jak zolnierz bez karabinu" ;; *) echo Napisałeś $1;; ESAC To taki switch (jak w ansi c) w którym za zmienną brany jest pierwszy argument skryptu (w tym wypadku oczywiście). $1 jest prównywane z 'dupa' oraz '1' a jeżeli wszystko zawiedzie to wykonywana jest czynność domyślna *). Proszę zwrócić uwagę na ;; - podwójne średniki! Pętle 4

Skupimy się na dwóch pętlach: for'a i while'a. For jest bardzo przydatny bo można iterować po wszyskim. FOR uczelnie IN agh uj pk ar ap ae ; DO echo $uczelnie done Jak widać pod zmienną uczelnie są podstawiane kolejne nazwy z listy. Mogą to być również pliki z folderu, albo kolejni użytkownicy z listy itd. Pętle liczbową łatwiej zrobić while'm: i=0; while [ $i -le 10 ]; do i=$[i+1]; #inkrementujemy licznik echo $i done Widać, że warunki są tworzone identycznie jak w IFie. Reszta jest chyba oczywista. Można pomijać ten średnik po warunku ( ten przed 'do') jeżeli 'do' napiszemy w nowej linii. Średnik zachowuje się tak samo jak koniec linii. Cytowanie Mamy trzy rodzaje cytowania: "jedno", 'drugie' i `trzecie`. Czym się różnią pokazuje poniższy skrypt: $JEDEN="whoami" echo "$JEDEN" echo '$JEDEN' echo `$JEDEN`./skrypt whoami $JEDEN kdzwinel " - działa tak że wypisuje wszystko ze środka interpretując zmienne ' - nie interpretuje zmiennych, porpostu wypisuje wszystko jako zwykły tekst ` - interpretuje zmienne i uruchamia polecenia zawarte w tekście ( teks po poleceniu zostanie potraktowany jako parametr) Cytowanie przydaje się wtedy gdy chcemy przekazać poleceniu parametr skłądający się z dwóch (lub więcej) wyrazów np./skrypt "ZSZ WG" bez cytowania każde słowo zostało by potraktowane jako oddzielna zmienna. 5

Funkcje Funkcje tworzymy np. na sposób znany z c: funct () { echo "dupa" } funct #wywolanie Funkcje nigdy nic nie zwracają i nigdy nie mają określonych pomiedzy '(' a ')' parametrów jakie przyjmują. Jeżeli już koniecznie chcemy coś przekazać to wewnątrz funkcji działają $1 $2 itd, czyli funkcja zachowuje się jak 'skrypt w skrypcie'. funct () { echo $1 } funct "dupa" #wywolanie Funkcje mogą być deklarowane 'gdziebądź', ale są rozpoznawalne tylko w kodzie poniżej deklaracji. 6