Programy systemowe ciąg dalszy
Ćwiczenie 0. Napisz skrypt który wyznaczy pierwiastki równania kwadratowego. Dla uproszczenia pierwiastek kwadratowy z liczby zapisanej w zmiennej LICZBA wyznaczamy w sposób następujący:
PIERWIASTEK_KWADRATOWY=$(echo "scale=2;sqrt($LICZBA)" | bc)
Wynik zapisany będzie w tym przypadku w zmiennej PIERWIASTEK_KWADRATOWY.
#!/bin/bash
echo -n "Podaj liczbę: "
read A #wczytanie danych z klawiatury
echo "Podales wartosc: $A"
#Operacje arytmetyczne
B=$((A+1))
B=$[A+1]
let B=A+1
B=`expr $A + 1`
B=$(expr $A + 1)
....
if [ $A -gt $B ] ; then
#if test $A -gt $B ; then
....
else
....
fi
if [ ! $A -ne $B ] ; then
....
elif [ ] ; then
....
fi
exit 0
Nadawanie uprawnień do wykonania:
chmod +x NAZWA_SKRYPTU
Przydatne programy i aplikacje: grep, cat, ls.
Ćwiczenie 1. Napisz skrypt, który wyświetli wszystkie pliki z katalogu /dev, które:
- są urządzeniami blokowymi.
- na końcu nazwy mają cyfrę.
- są urządzeniami blokowymi i na końcu nazwy mają cyfrę.
- w nazwie mają wyłącznie i dokładnie 3 dowolne znaki.
- w nazwie mają nie więcej niż 3 dowolne znaki.
Przydatne programy i aplikacje: grep, wc, ls, $1, $#, if, else, fi, test
Ćwiczenie 2. Napisz skrypt, który pobierze jako argument nazwę katalogu i:
- wyświetli nazwy wszystkie plików z tego katalogu (wyłącznie nazwy)
- policzy i wyświetli informacje ile tych plików tam jest
- policzy i wyświetli informacje ile tam jest katalogów
- policzy i wyświetli informacje ile tam jest w sumie katalogów i plików
Skrypt ma działać wyłącznie jeżeli zostanie uruchomiony z jednym argument, który jest katalogiem do odczytu.
Przydatne programy i aplikacje: grep, wc, ls, $1, $2, $3, $#, if, else, fi, test
Ćwiczenie 3. Napisz skrypt, który pobierze jako argument 3 liczby i
- sprawdzi czy są to liczby (mogą być ujemne) i jak tak to:
- wyznaczy sumę tych liczb
- wyznaczy największą z nich
- wyznaczy najmniejszą z nich
- wyznaczy ilość cyfr w największej z liczb
Skrypt ma działać wyłącznie jeżeli zostanie uruchomiony z trzema argumentami, które są liczbami - uwaga liczby mogą być ujemne..
Ćwiczenie 4. Napisz skrypt, który pobierze jako argument 3 liczby i
- sprawdzi czy są to liczby (mogą być ujemne) i jak tak to:
- wyznaczy sumę tych liczb
- wyznaczy środkową z nich pod warunkiem że są one różne od siebie
- wyznaczy ilość cyfr w największej z liczb
Skrypt ma działać wyłącznie jeżeli zostanie uruchomiony z trzema argumentami, które są liczbami - uwaga liczby mogą być ujemne..
Ćwiczenie 5. Napisz skrypt, który pobierze jako argument 3 liczby i
- sprawdzi czy są to liczby (mogą być tylko dodatnie) i jak tak to:
- wyznaczy iloczyn tych liczb
- wyznaczy sum minimalnej i maksymalnej liczby z nich pod warunkiem że są one różne od siebie
- wyznaczy ilość znaków podanych do skryptu bez spacji.
Skrypt ma działać wyłącznie jeżeli zostanie uruchomiony z trzema argumentami, które są liczbami dodatnimi.
Ćwiczenie 6. Napisz skrypt, który pobierze jako argument 3 liczby i
- sprawdzi czy są to liczby (mogą być tylko dodatnie) i jak tak to:
- wyznaczy ilorazy tych liczb - żadna nie może być zerem
- wyznaczy różnicę maksymalnej i minimalnej liczby pod warunkiem że trzy liczby wejściowe są różne od siebie
- wyznaczy ilość znaków podanych do skryptu bez spacji.
Skrypt ma działać wyłącznie jeżeli zostanie uruchomiony z trzema argumentami, które są liczbami dodatnimi.
#!/bin/bash
if test "$#" -eq 0 ; then
echo "Nie zostaly podane zadne argumenty"
exit 1
fi
if test ! -d "$1" ; then
echo "Argument $1 nie jest katalogiem"
exit 2
fi
if [ ! -r "$1" ] ; then
echo "Argument $1 jest katalogiem ale nie do odczytu"
exit 3
fi
D="$1"
echo " ------------ ZADANIE 1 ------------ "
ls -l "$D" | grep ........
echo " ------------ ZADANIE 2 ------------ "
ls -l "$D" | grep ........
echo " ------------ ZADANIE 3 ------------ "
ls -l "$D" | grep ........
exit 0
Ćwiczenie 1. Napisz skrypt, który wyświetli wszystkie pliki z katalogu /dev, które:
- są urządzeniami blokowymi.
ls -l /dev | grep "^b"
- na końcu nazwy mają cyfrę.
ls /dev | grep "[0-9]$"
- są urządzeniami blokowymi i na końcu nazwy mają cyfrę.
ls -l /dev | grep "^b.*[0-9]$"
- w nazwie mają wyłącznie i dokładnie 3 dowolne znaki.
ls -l /dev | grep "^...$"
- w nazwie mają nie więcej niż 3 dowolne znaki.
ls -l /dev | egrep "^..?.?$"
Przydatne programy i aplikacje: grep, wc, ls, $1, $#, if, else, fi, test
Ćwiczenie 2. Napisz skrypt, który pobierze jako argument nazwę katalogu i:
- wyświetli nazwy wszystkie plików z tego katalogu (wyłącznie nazwy)
- policzy i wyświetli informacje ile tych plików tam jest
- policzy i wyświetli informacje ile tam jest katalogów
- policzy i wyświetli informacje ile tam jest w sumie katalogów i plików
#!/bin/bash
if test "$#" -eq 0 ; then
echo "Nie zostaly podane zadne argumenty"
exit 1
fi
if test ! -d "$1" ; then
echo "Argument $1 nie jest katalogiem"
exit 2
fi
if [ ! -r "$1" ] ; then
echo "Argument $1 jest katalogiem ale nie do odczytu"
exit 3
fi
D="$1"
echo " ------------ ZADANIE 1 ------------ "
ls "$D"
echo " ------------ ZADANIE 2 ------------ "
ls -F "$D" | | grep -v "/$" | wc -l
echo " ------------ ZADANIE 3 ------------ "
ls -F "$D" | grep "/$" | wc -l
echo " ------------ ZADANIE 3 ------------ "
echo $[$(ls -F "$D" | grep "/$" | wc -l)+$(ls -F "$D" | | grep -v "/$" | wc -l)]
exit 0
Skrypt ma działać wyłącznie jeżeli zostanie uruchomiony z jednym argument, który jest katalogiem do odczytu.
Przydatne programy i aplikacje: grep, wc, ls, $1, $2, $3, $#, if, else, fi, test
Ćwiczenie 3. Napisz skrypt, który pobierze jako argument 3 liczby i
- sprawdzi czy są to liczby (mogą być ujemne) i jak tak to:
- wyznaczy sumę tych liczb
- wyznaczy największą z nich
- wyznaczy najmniejszą z nich
- wyznaczy ilość cyfr w największej z liczb
Skrypt ma działać wyłącznie jeżeli zostanie uruchomiony z trzema argumentami, które są liczbami - uwaga liczby mogą być ujemne..
#!/bin/bash
if test "$#" -ne 0 ; then
echo "Nie zostaly podane zadne argumenty"
exit 1
fi
expr "$1" + 0 >/dev/null 2>/dev/null
CZY_LICZBA1=$?
expr "$2" + 0 >/dev/null 2>/dev/null
CZY_LICZBA2=$?
expr "$3" + 0 >/dev/null 2>/dev/null
CZY_LICZBA3=$?
SUMA=$[CZY_LICZBA1+CZY_LICZBA2+CZY_LICZBA3]
if [ $SUMA -ne 0 ] ; then
echo "Nie wszystkie wartosci sa liczbami"
exit 1
fi
SUMA=$[$1+$2+$3]
let MAX=( ? : )
let MIN=( ? : )
LICZBA_CYFR=$[ $(echo $MAX | wc -l)-1]
- wyznaczy największą z nich
- wyznaczy najmniejszą z nich
- wyznaczy ilość cyfr w największej z liczb
Ćwiczenie 4. Napisz skrypt, który pobierze jako argument 3 liczby i
expr $1 + 0 > /dev/null 2> /dev/null
if [ $? -eq 0 ] ; then
echo $1 to liczba
fi
lub
if echo $2 | egrep "^-?[0-9]+$" ; then
echo $2 to liczbami
fi
- sprawdzi czy są to liczby (mogą być ujemne) i jak tak to:
let suma=..+..+
- wyznaczy sumę tych liczb
tutaj piszemy if i kombinujemy aby bylo dobrze
- wyznaczy środkową z nich pod warunkiem że są one różne od siebie
jako przykład:
echo -n "ala" | wc -c
dlaczego dałem -n
- wyznaczy ilość cyfr w największej z liczb
Skrypt ma działać wyłącznie jeżeli zostanie uruchomiony z trzema argumentami, które są liczbami - uwaga liczby mogą być ujemne..