Skrypty shellowe #!/bin/bash echo Witaj # krzyzyk oznacza

advertisement
Skrypty shellowe
#!/bin/bash
echo Witaj
# krzyzyk oznacza komentarz
#!/bin/bash
echo Czesc
echo twój katalog domowy to
echo $HOME
#!/bin/bash
echo Teraz wstawimy zmienna
x=2
echo Nasza zmienna ma wartosc $x
#!/bin/bash
echo "Podaj swoje imie:"
readimie
echo "Masz na imię $imie, lepiej nie można było :-)"
#!/bin/bash
x=2
y=4
z=$(($x+$y))
echo "Twoja pierwsza liczba to: $x"
echo "Twoja druga liczba to: $y"
tekst="zmienna tekstowa"
echo "Suma tych liczb wynosi $z"
echo "Natomiast zmienna tekstowa: $tekst"
#!/bin/bash
# program na warunek
#warunek=2
echo -n "Podaj liczbe wieksze od zera: "
read liczba
if [ $liczba -gt 0 ]
then
echo "Podales dobra liczbe. $liczba jest wieksza od zera"
fi
# -n znak nie jest wysylany do nowej linii
# -e wlacza interpretacje znakow specjalnych
#
#
#
#
#
#
#
#
\b
\a
\c
\f
\r
\t
\v
\\
backspace
sygnal
pomija znak konczacy nowej linii
escape
znak nowej linii
tabulacja pozioma
tabulacja pionowa
backslash
#
#
#
#
#
#
$ wskazuje na nazwe zmiennej
` ` odwrotny apostrof - uozliwia zacytowanie polecenia
' ' wszystko pomiedzy jest traktowane jako tekst - nie ma
interpretacji polecen
#!/bin/bash
# program na warunek
echo -n "Podaj liczbe z przedziauu (0,10):"
read liczba
if [ $liczba -gt 0 ] && [ $liczba -lt 10 ]
then
echo e "\tPodales dobra liczbe. $liczba nalezy do przedziau (0,10)"
else
echo -e "\tOszukales. $liczba nie nalezy do tego przedzialu"
fi
#
#
#
#
#
#
#
#
#
Operatory
=
!=
-eq
-ge
-le
-ne
-gt
-lt
porownania
rowne (lancuchy znakow)
nierowne (lancuchy znakow)
rowne (liczby)
wieksze lub rowne (liczby)
mniejsze lub rowne (liczby)
rowne (liczby)
wieksze niz (liczby)
mniejsze niz (liczby)
#!/bin/bash
# instrukcja case
echo -n "Podaj cyfre dla dnia tygodnia: "
read cyfra
case "$cyfra"
"1") echo
"2") echo
"3") echo
in
-e "\tPoniedzialek" ;;
-e "\tWtorek" ;;
-e "\tSroda" ;;
"4") echo -e "\tCzwartek" ;;
"5") echo -e "\tPiatek" ;;
"6") echo -e "\tSobota" ;;
"7") echo -e "\tNiedziela" ;;
*) echo "To nie to"
esac
#!/bin/bash
# skrypcik na petle for
# ------------- skladnia -------#
#
for zmienna in zakres
#
do
#
instrukcje
#
done
#
# ------------------------------for i in 1 2 3 4 5 6 7 8
do
echo "Liczba $i"
done
#!/bin/bash
# skrypt na petle select
# ---------- skladnia ------------#
select zmienna in zakres
#
do
#
instrukcje
#
done
# --------------------------------select liczba in A B C D
do
echo "To koniec pokazu"
break
done
#!/bin/bash
# przyklad select z case
echo "Wybierz cos:"
select x in A B C D
do
case "$x" in
"A") echo "Wybrales A" ;;
"B") echo "Wybrales B" ;;
"C") echo "Wybrales C" ;;
"D") echo "Wybrales D" ;;
*) echo "Nic nie wybrales"
esac
break
done
#!/bin/bash
# petla while
# ------------- skladnia ------#
while warunek
#
do
#
instrukcje
#
done
# -----------------------------liczba=1
while [ $liczba -le 10 ]
do
echo "Liczba ma wartosc: $liczba"
liczba=$[liczba+1]
done
#!/bin/bash
# petla until
# ------------- skladnia ------#
until warunek
#
do
#
instrukcje
#
done
# -----------------------------liczba=1
until [ $liczba -ge 10 ]
do
echo -e "Liczba ma wartosc: $liczba \a"
liczba=$[liczba+1]
done
Zadanie 1. Napisać skrypt, który wyświetlać będzie aktualną datę.
#!/bin/bash
data=`date`
echo Teraz jest $data
Zadanie 2. Napisać skrypt, który do momentu zalogowania się użytkownika login co sekundę
będzie wyświetlał znak ".".
#!/bin/bash
until who | grep login > /dev/null
do
sleep 1
echo "."
done
echo "*** login zalogowany ***"
Zadanie 3. Napisać skrypt, który zobrazuje działania dzielenia i mnożenia.
#!/bin/bash
# skladnia
# $((wyrazenie)) lub $[wyrazenie]
echo $((8/2))
wynik=$[4*8/4]
echo $wynik
Zadanie 4. Napisać skrypt, który zmieni rozszerzenia plików z *.jp na *.jpg.
#!/bin/bash
for plik in *.jp
do
mv $plik ${plik%.*}.jpg
done
Zadanie 5. Napisac skrypt obliczajacy sumę, różnicę i iloczyn dwóch wczytanych liczb
całkowitych. (Użyj polecenia read.)
Zadanie 6. Napisac skrypt sprawdzajacy, czy w katalogu głównym użytkownika istnieje plik
.bashrc. (Użyj instrukcji warunkowej if.)
#!/bin/bash
if [ -e ~/.bashrc ]
#powyzsze jest rownowazne: if test -e ~/.bashrc
then echo "Masz plik .bashrc"
else
echo "Nie masz pliku .bashrc"
fi
#
#
#
#
#
#
#
#
#
#
Warunki dla pliku:
-d plik, plik jest katalogiem
-e plik, plik istnieje
-f plik, plik jest plikiem regularnym
-g plik, plik ma przypisany set-gropu-id
-r plik, plik daje sie odczytac
-s plik, plik ma niezerowy rozmiar
-u plik, plik ma przypisany set-user-id
-w plik, plik mo na edytowac (mo na pisac))
-x plik, plik wykonywalny
Download