SO/LS/LSdod
From WikiZMSI
Spis treści |
[edytuj]
Tworzenie pliku z zawartością tekstową np. html
- Skrypt ma utworzyć plik index.html zawierający treść:
<html> <head> <title> The title of your page </title> </head> <body> Your page content goes here. </body> </html>
- Rozwiązanie 1 skrypt sysinfo_page:
#!/bin/bash # sysinfo_page - A script to produce an html file echo "<html>" echo "<head>" echo " <title>" echo " The title of your page" echo " </title>" echo "</head>" echo "" echo "<body>" echo " Your page content goes here." echo "</body>" echo "</html>"
uruchomienie: sysinfo_page > sysinfo_page.html
- Rozwiązanie 2:
#!/bin/bash # sysinfo_page - A script to produce an HTML file echo "<html> <head> <title> The title of your page </title> </head> <body> Your page content goes here. </body> </html>"
- Rozwiązanie 3
#!/bin/bash # sysinfo_page - A script to produce an HTML file cat << _EOF_ <html> <head> <title> The title of your page </title> </head> <body> Your page content goes here. </body> </html> _EOF_
- Zamienić znak << na <<- i zobaczyć jaka jest różnica.
[edytuj]
Zmienne
- Kontener dla wartości wykorzystywany wielokrotnie
- Utwórz skrypt sysinfo_page:
#!/bin/bash # sysinfo_page - A script to produce an HTML file cat <<- _EOF_ <html> <head> <title> My System Information </title> </head> <body> <h 1>My System Information</h1 > </body> </html> _EOF_
- Zadanie do ostatniej wersji programu sysinfo_page dodaj zmienną
title="My System Information"
i zmień w kodzie w odpowiednim miejscu (2 miejsca) na
$title
W przypadku skryptu stworzyliśmy zmienną zwaną "title" i umieściliśmy w pamięci frazę "My System Information". Wewnątrz tego skryptu, który zawiera HTML, używamy "$title" do powiedzenia powłoce, aby wykonała interpretację parametrów i zamieniła nazwę zmiennej na zawartość zmiennej.
- Zmienne środowiska - sprawdź jakie są poleceniem
printenv
- Utwórz skrypt
#!/bin/bash # sysinfo_page - A script to produce an HTML file title="System Information for" cat <<- _EOF_ <html> <head> <title> $title $HOSTNAME </title> </head> <body> <h 1>$title $HOSTNAME</h1> </body> </html> _EOF_
[edytuj]
zmienne
Zmodyfikuj swój kod by użyć definicji stałych
[edytuj]
Funkcje w powłoce
- Przeanalizuj kod i powiedz jaka jest składnia funkcji w powłoce
#!/bin/bash # sysinfo_page - A script to produce an system information HTML file ##### Constants TITLE="System Information for $HOSTNAME" RIGHT_NOW=$(date +"%x %r %Z") TIME_STAMP="Updated on $RIGHT_NOW by $USER" ##### Functions system_info() { # Temporary function stub echo "function system_info" } show_uptime() { # Temporary function stub echo "function show_uptime" } drive_space() { # Temporary function stub echo "function drive_space" } home_space() { # Temporary function stub echo "function home_space" } ##### Main cat <<- _EOF_ <html> <head> <title>$TITLE</title> </head> <body> <h 1>$TITLE</h1> < p>$TIME_STAMP</p> $(system_info) $(show_uptime) $(drive_space) $(home_space) </body> </html> _EOF_
[edytuj]
Kilka przykładów
- Zmienić funkcję show_uptime():
show_uptime() { echo "<h 2>System uptime</h2>" echo "< pre>" uptime echo "</pre>" }
- Zmienić funkcję drive_space()
drive_space() { echo "<h 2>Filesystem space</h2>" echo < pre>" df echo </pre> }
- Zmienić funkcję home_space
home_space() { echo "<h 2>Home directory space by user</h2>" echo "< pre>" echo "Bytes Directory" du -s /home/* | sort -nr echo "</pre>" }
- Zmienić funkcję system_info
system_info() { echo "<h 2>System release info</h2>" echo "< p>Function not yet implemented</p>" }
[edytuj]
instrukcja warunkowa
- popraw funkcję home_space
function home_space { # Only the superuser can get this information if [ "$(id -u)" = "0" ]; then echo "< h2>Home directory space by user</h2>" echo "< pre>" echo "Bytes Directory" du -s /home/* | sort -nr echo "</pre>" fi } # end of home_space