SO/LS/LSdod

From WikiZMSI

< SO | LS

Spis treści

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.

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_


zmienne

Zmodyfikuj swój kod by użyć definicji stałych

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_

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>" 
 }

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