Shell Programming



Oleh: Ahmad kurniawan
My first Shell Script

• vi myfirstscript.sh
  #! /bin/csh
  set directory=`pwd`
  echo The date today is `date`
  echo The current directory is $directory

• chmod u+x myfirstscript.sh
• myfirstscript.sh
UNIX Shell Scripts

• UNIX shell scripts adalah suatu
  sekumpulan teks yang berisi perintah-
  perintah UNIX yang berurutan
• Seperti halnya bahasa pemrograman,
  programmer membuat script dengan text
  editor
• Shell script tidak membutuhkan compiler
• Hal ini terjadi karena UNIX shell seolah-
  olah bertingkahlaku seperti interpreter
  saat membaca script dari file
UNIX Shell Scripts (Cont’d)

•   Karena bertingkah laku seperti interpreter maka statement
    yang ada pada script akan langsung di translasikan pada
    instruksi executable dan menyebabkannya untuk langsung
    menjalankan executable tersebut
•   Setelah anda menulis shell script, anda akan
    memberitahukan pada OS bahwa program dapat dijalankan.
•   Hal ini dapat dilakukan dengan menggunakan perintah
    chmod untuk merubah mode dari file.
UNIX Shell Scripts (cont’d)

• Perintah chmod memberi tahu komputer
  siapa saja yang berhak menggunakan file
  tersebut: owner (u), group (g), atau other
  users (o)
• Program Shell berjalan sedikit kurang
  cepat dari pada compiled programs,
  karena shell harus menterjemahkan
  masing-masing perintah UNIX sebelum
  mengeksekusinya
Pemrograman Shell

    Yang umum digunakan pada kebanyakan varian
    UNIX adalah:
•   Bourne Shell (sh), shell pertama yang dibuat oleh
    UNIX
•   Bourne Again Shell (bash), dibuat oleh programmer
    dari Free Software Foundation, open source shell
    dari GNU
•   Korn Shell (ksh), dibuat oleh David Korn, pembuat
    dari Bourne shell, tidak disebarluaskan.
•   C Shell (csh), dibuat oleh Bill Joy, pembuat vi,
    mengimplementasikan struktur bahasa C.
•   Terminal Based C Shell (tcsh), versi lanjut dari the
    Berkeley UNIX C shell (csh)
Pemrograman Shell

• Semua versi linux menggunakan
  Bash shell (Bourne Again Shell)
  sebagai shell standarnya
• Semua sistem system menyertakan
  C shell dan Bourne shell.
Pemrograman Shell

• Fitur-fitur programming dari UNIX
  shell:
  Shell variables
  Operators
  Logic structures
Pemrograman Shell

• Fitur-fitur programming dari UNIX shell:
   Shell variables: script anda biasanya sering menyimpan
           variables
    nilai untuk digunakan kemudian, variabel shell
    merupakan nama simbolik yang dapat diakses dari
    memori
   Operators: Script Shell mendukung banyak operator,
    Operators
    termasuk operasi matematik
   Logic structures: Script Shell mendukung sequential
           structures
    logic (untuk menjalankan perintah serial), decision logic
    (untuk percabangan), looping logic (untuk proses
    looping), dan case logic (untuk proses seleksi)
Pemrograman Shell

• Fitur-fitur programming dari UNIX
  shell:
  Shell variables
  Operators
  Logic structures
Variables

• Variables merupakan nama simbolik yang
  merepresentasikan nilai yang disimpan di
  memori
• Tiga tipe dari variabel adalah
  configuration variables, environment
  variables, dan shell variables
• gunakan configuration variables untuk
  menyimpan informasi tentang setup dari
  sistem operasi dan jangan merubahnya.
• Anda dapat merubah environment
  variables dengan nilai inisial
Variables (Cont’d)

• Variabel ini, dimana UNIX membacanya pada
  saat anda login, menetapkan banyak
  karakteristik dari sesi anda
• Shell variables adalah variabel yang di buat
  pada script
• Environment dan configuration variables
  memperlihatkan nama standar, seperti HOME,
  PATH, SHELL, USERNAME, dan PWD
Variables (Cont’d)

Untuk melihat daftar dari
  environment variables:
 $ printenv
atau:
  $ printenv | more
Variables (Cont’d)

1. Ciri khas Environment Variables
    – HOME: pathname of your home directory
    – PATH: directories where shell is to look for
        commands
    – USER: your user name
    – PWD: your current working directory
    – MAIL: pathname of your system mailbox
    – SHELL: pathname of your shell
2. Isi dari variable dapat diakses menggunakan ‘$’:
    Misal: $ echo $HOME
Variables (Cont’d)

•   Cara pemberian variabel adalah
    variable=value (kecuali pada C shell).
      $ x=37; echo $x
      $ 37
      $ unset x; echo $x
•   C shell menggunakan statement “set”.
      $ set x = 37
•   Anda dapat meng-set a pathname atau
    variabel perintah atau menganti set dari
    variable.
      $ set mydir=`pwd`; echo $mydir
Variables (Cont’d)

• Untuk menulis daftar:
  $ set Y = (UNL 123 CS251)

• Untuk meng-set elemen daftar:
  $ set Y[2] = HUSKER

• Untuk melihat isi dari daftar:
  $ echo $Y[2]
Variables (Cont’d)

• vi myinputs.sh
  #! /bin/csh
  echo Total number of inputs: $#argv
  echo First input: $argv[1]
  echo Second input: $argv[2]

• chmod u+x myinputs.sh
• myinputs.sh HUSKER UNL CSE
Pemrograman Shell

• Fitur-fitur programming dari UNIX
  shell:
  Shell variables
  Operators
  Logic structures
Shell Operators



• Operator dari Bash shell di bagi menjadi 3
  kelompok: operator definisi dan evaluasi,
  operator aritmatik, dan operator redirect
  dan piping.
Operator Aritmetik

• expr mendukung operator berikut ini:
  – arithmetic operators: +,-,*,/,%
  – comparison operators: <, <=, ==, !=, >=, >
  – boolean/logical operators: &, |
  – precedence is the same as C, Java
Operator Aritmetik (contoh)

• vi math.sh
   #!/bin/csh
   set count=5
  set count=`expr $count + 1`
  echo $count
• chmod u+x math.sh
• math.sh
Shell Programming

• Fitur-fitur programming dari UNIX
  shell:
  Shell variables
  Operators
  Logic structures
Shell Logic Structures

Empat struktur logika dasar:
Sequential logic
Decision logic
Looping logic
Case logic
Sequential Logic

• Statemen Sequential logic adalah
  perintah-perintah yang akan dieksekusi
  seperti apa yang terlihat terutur pada
  program

• Pemberhentian dari urutan program
  adalah jika adanya intruksi percabangan.
Decision Logic

• Decision logic membuat program
  kita dapat dieksekusi pada kondisi
  tertentu
• if statement adalah kontrol
  keputusan utama pada jenis logika
  ini.
Decision Logic (cont’d)

• if-then
     if ( expr ) simple-command
• if-then-else
       if ( expr ) then
              command-set-1
       [else
              command-set-2]
       endif
Decision Logic (cont’d)

• Contoh

  #!/bin/csh
  if ($#argv != 2) then
        echo $0 needs two parameters!
        echo You are inputting $#argv parameters.
  else
        set par1 = $argv[1]
        set par2 = $argv[2]
  endif
Decision Logic (cont’d)

Contoh:

     #! /bin/csh
     # number is positive, zero or negative
     echo "enter a number:"
     set number = $<
     if ( $number < 0 ) then
             echo "negative"
     else if ( $number == 0 ) then
             echo zero
     else
           echo positive
     endif
Decision Logic (cont’d)

Contoh:
    #!/bin/csh
    if {( grep UNIX $argv[1] > /dev/null )} then
           echo UNIX occurs in $argv[1]
    else
           echo No!
           echo UNIX does not occur in $argv[1]
    endif
Looping Logic

• Pada looping logic, perulangan akan dilakukan
  sampai dengan kondisi tertentu tercapai
• Ada dua jenis mekanisme perulangan: for dan
  while
• Gunakan perulangan for untuk proses perulangan
  dengan nilai jangkauan tertentu.
While Loop

• Cara lain dari proses looping adalah adalah
  menggunakan statement while
• Statement while statement digambarkan dengan
  suatu loop yang berkelanjutan terus menerus
  sampai dengan kondisi tertentu terpenuhi
• Selama statement dalam tanda kurung bernilai
  trua maka statement yang ada diantara do dan
  done akan terus di ulang-ulang
Looping Logic

while ( expr )
 command_set
end

foreach var ( worddlist )
  command_set
end
Looping Logic

Program:

  #!/bin/csh
  foreach person (Bob Susan Joe Gerry)
    echo Hello $person
  end

Output:
  Hello Bob
  Hello Susan
  Hello Joe
  Hello Gerry
Looping Logic

• Penambahan nilai integer dari 1 s/d 10
    #!/bin/csh
    set i=1
    set sum=0
    while ($i <= 10)
        echo Adding $i into the sum.
        set sum=`expr $sum + $i`
       set i=`expr $i + 1`
    end
    echo The sum is $sum.
Switch Logic

• Struktur dari switch logic mempermudah
  proses seleksi dari pencocokan ketika
  melakukan proses pemilihan

• Memperbolehkan program untuk
  mengambil suatu tindakan berdasar pada
  nilai suatu variabel
Switch Logic

switch ( var )
  case string1:
      command_set_1
      breaksw
  case string2:
      command_set_2
      breaksw
  default
      command_set_3
endsw
Switch Logic

#!/bin/csh
if ($#argv == 0 ) then
    echo "No arguments supplied...exiting"
else
    switch ($argv[1])
      case [yY]:
          echo Argument one is yes.
          breaksw
      case [nN]:
          echo Argument one is no.
          breaksw
      default:
          echo Argument one is neither yes nor no.
          breaksw
     endsw
endif
Kesimpulan

• A high-level language harus di konversi
  menjadi low-level (machine) language
  sebelum komputer mengeksekusinya
• Shell menterjemahkan script UNIX shell
• Script UNIX shell, dibuat dengan vi atau
  aplikasi editor lainnya, berisikan
  instruksi dimana kita tidak perlu
  membuatnya karena intruksi tersebut
  telah ada pada sistem operasi.
Kesimpulan (cont’d)
• Linux shells bersalar dari UNIX Bourne, Korn,
  dan C shells
• UNIX terdiri dari 3 jenis tipe variabel:
   – Configuration
   – Environment
   – Shell
• Shell mendukung banyak operator, termasuk
  sejumlah operasi matematika.
• Struktur logic yang ada pada shell diantaranya
  adalah sequential, decision, looping, dan case

Materi 2

  • 1.
  • 2.
    My first ShellScript • vi myfirstscript.sh #! /bin/csh set directory=`pwd` echo The date today is `date` echo The current directory is $directory • chmod u+x myfirstscript.sh • myfirstscript.sh
  • 3.
    UNIX Shell Scripts •UNIX shell scripts adalah suatu sekumpulan teks yang berisi perintah- perintah UNIX yang berurutan • Seperti halnya bahasa pemrograman, programmer membuat script dengan text editor • Shell script tidak membutuhkan compiler • Hal ini terjadi karena UNIX shell seolah- olah bertingkahlaku seperti interpreter saat membaca script dari file
  • 4.
    UNIX Shell Scripts(Cont’d) • Karena bertingkah laku seperti interpreter maka statement yang ada pada script akan langsung di translasikan pada instruksi executable dan menyebabkannya untuk langsung menjalankan executable tersebut • Setelah anda menulis shell script, anda akan memberitahukan pada OS bahwa program dapat dijalankan. • Hal ini dapat dilakukan dengan menggunakan perintah chmod untuk merubah mode dari file.
  • 5.
    UNIX Shell Scripts(cont’d) • Perintah chmod memberi tahu komputer siapa saja yang berhak menggunakan file tersebut: owner (u), group (g), atau other users (o) • Program Shell berjalan sedikit kurang cepat dari pada compiled programs, karena shell harus menterjemahkan masing-masing perintah UNIX sebelum mengeksekusinya
  • 6.
    Pemrograman Shell Yang umum digunakan pada kebanyakan varian UNIX adalah: • Bourne Shell (sh), shell pertama yang dibuat oleh UNIX • Bourne Again Shell (bash), dibuat oleh programmer dari Free Software Foundation, open source shell dari GNU • Korn Shell (ksh), dibuat oleh David Korn, pembuat dari Bourne shell, tidak disebarluaskan. • C Shell (csh), dibuat oleh Bill Joy, pembuat vi, mengimplementasikan struktur bahasa C. • Terminal Based C Shell (tcsh), versi lanjut dari the Berkeley UNIX C shell (csh)
  • 7.
    Pemrograman Shell • Semuaversi linux menggunakan Bash shell (Bourne Again Shell) sebagai shell standarnya • Semua sistem system menyertakan C shell dan Bourne shell.
  • 8.
    Pemrograman Shell • Fitur-fiturprogramming dari UNIX shell: Shell variables Operators Logic structures
  • 9.
    Pemrograman Shell • Fitur-fiturprogramming dari UNIX shell:  Shell variables: script anda biasanya sering menyimpan variables nilai untuk digunakan kemudian, variabel shell merupakan nama simbolik yang dapat diakses dari memori  Operators: Script Shell mendukung banyak operator, Operators termasuk operasi matematik  Logic structures: Script Shell mendukung sequential structures logic (untuk menjalankan perintah serial), decision logic (untuk percabangan), looping logic (untuk proses looping), dan case logic (untuk proses seleksi)
  • 10.
    Pemrograman Shell • Fitur-fiturprogramming dari UNIX shell: Shell variables Operators Logic structures
  • 11.
    Variables • Variables merupakannama simbolik yang merepresentasikan nilai yang disimpan di memori • Tiga tipe dari variabel adalah configuration variables, environment variables, dan shell variables • gunakan configuration variables untuk menyimpan informasi tentang setup dari sistem operasi dan jangan merubahnya. • Anda dapat merubah environment variables dengan nilai inisial
  • 12.
    Variables (Cont’d) • Variabelini, dimana UNIX membacanya pada saat anda login, menetapkan banyak karakteristik dari sesi anda • Shell variables adalah variabel yang di buat pada script • Environment dan configuration variables memperlihatkan nama standar, seperti HOME, PATH, SHELL, USERNAME, dan PWD
  • 13.
    Variables (Cont’d) Untuk melihatdaftar dari environment variables: $ printenv atau: $ printenv | more
  • 14.
    Variables (Cont’d) 1. Cirikhas Environment Variables – HOME: pathname of your home directory – PATH: directories where shell is to look for commands – USER: your user name – PWD: your current working directory – MAIL: pathname of your system mailbox – SHELL: pathname of your shell 2. Isi dari variable dapat diakses menggunakan ‘$’: Misal: $ echo $HOME
  • 15.
    Variables (Cont’d) • Cara pemberian variabel adalah variable=value (kecuali pada C shell). $ x=37; echo $x $ 37 $ unset x; echo $x • C shell menggunakan statement “set”. $ set x = 37 • Anda dapat meng-set a pathname atau variabel perintah atau menganti set dari variable. $ set mydir=`pwd`; echo $mydir
  • 16.
    Variables (Cont’d) • Untukmenulis daftar: $ set Y = (UNL 123 CS251) • Untuk meng-set elemen daftar: $ set Y[2] = HUSKER • Untuk melihat isi dari daftar: $ echo $Y[2]
  • 17.
    Variables (Cont’d) • vimyinputs.sh #! /bin/csh echo Total number of inputs: $#argv echo First input: $argv[1] echo Second input: $argv[2] • chmod u+x myinputs.sh • myinputs.sh HUSKER UNL CSE
  • 18.
    Pemrograman Shell • Fitur-fiturprogramming dari UNIX shell: Shell variables Operators Logic structures
  • 19.
    Shell Operators • Operatordari Bash shell di bagi menjadi 3 kelompok: operator definisi dan evaluasi, operator aritmatik, dan operator redirect dan piping.
  • 20.
    Operator Aritmetik • exprmendukung operator berikut ini: – arithmetic operators: +,-,*,/,% – comparison operators: <, <=, ==, !=, >=, > – boolean/logical operators: &, | – precedence is the same as C, Java
  • 21.
    Operator Aritmetik (contoh) •vi math.sh #!/bin/csh set count=5 set count=`expr $count + 1` echo $count • chmod u+x math.sh • math.sh
  • 22.
    Shell Programming • Fitur-fiturprogramming dari UNIX shell: Shell variables Operators Logic structures
  • 23.
    Shell Logic Structures Empatstruktur logika dasar: Sequential logic Decision logic Looping logic Case logic
  • 24.
    Sequential Logic • StatemenSequential logic adalah perintah-perintah yang akan dieksekusi seperti apa yang terlihat terutur pada program • Pemberhentian dari urutan program adalah jika adanya intruksi percabangan.
  • 25.
    Decision Logic • Decisionlogic membuat program kita dapat dieksekusi pada kondisi tertentu • if statement adalah kontrol keputusan utama pada jenis logika ini.
  • 26.
    Decision Logic (cont’d) •if-then if ( expr ) simple-command • if-then-else if ( expr ) then command-set-1 [else command-set-2] endif
  • 27.
    Decision Logic (cont’d) •Contoh #!/bin/csh if ($#argv != 2) then echo $0 needs two parameters! echo You are inputting $#argv parameters. else set par1 = $argv[1] set par2 = $argv[2] endif
  • 28.
    Decision Logic (cont’d) Contoh: #! /bin/csh # number is positive, zero or negative echo "enter a number:" set number = $< if ( $number < 0 ) then echo "negative" else if ( $number == 0 ) then echo zero else echo positive endif
  • 29.
    Decision Logic (cont’d) Contoh: #!/bin/csh if {( grep UNIX $argv[1] > /dev/null )} then echo UNIX occurs in $argv[1] else echo No! echo UNIX does not occur in $argv[1] endif
  • 30.
    Looping Logic • Padalooping logic, perulangan akan dilakukan sampai dengan kondisi tertentu tercapai • Ada dua jenis mekanisme perulangan: for dan while • Gunakan perulangan for untuk proses perulangan dengan nilai jangkauan tertentu.
  • 31.
    While Loop • Caralain dari proses looping adalah adalah menggunakan statement while • Statement while statement digambarkan dengan suatu loop yang berkelanjutan terus menerus sampai dengan kondisi tertentu terpenuhi • Selama statement dalam tanda kurung bernilai trua maka statement yang ada diantara do dan done akan terus di ulang-ulang
  • 32.
    Looping Logic while (expr ) command_set end foreach var ( worddlist ) command_set end
  • 33.
    Looping Logic Program: #!/bin/csh foreach person (Bob Susan Joe Gerry) echo Hello $person end Output: Hello Bob Hello Susan Hello Joe Hello Gerry
  • 34.
    Looping Logic • Penambahannilai integer dari 1 s/d 10 #!/bin/csh set i=1 set sum=0 while ($i <= 10) echo Adding $i into the sum. set sum=`expr $sum + $i` set i=`expr $i + 1` end echo The sum is $sum.
  • 35.
    Switch Logic • Strukturdari switch logic mempermudah proses seleksi dari pencocokan ketika melakukan proses pemilihan • Memperbolehkan program untuk mengambil suatu tindakan berdasar pada nilai suatu variabel
  • 36.
    Switch Logic switch (var ) case string1: command_set_1 breaksw case string2: command_set_2 breaksw default command_set_3 endsw
  • 37.
    Switch Logic #!/bin/csh if ($#argv== 0 ) then echo "No arguments supplied...exiting" else switch ($argv[1]) case [yY]: echo Argument one is yes. breaksw case [nN]: echo Argument one is no. breaksw default: echo Argument one is neither yes nor no. breaksw endsw endif
  • 38.
    Kesimpulan • A high-levellanguage harus di konversi menjadi low-level (machine) language sebelum komputer mengeksekusinya • Shell menterjemahkan script UNIX shell • Script UNIX shell, dibuat dengan vi atau aplikasi editor lainnya, berisikan instruksi dimana kita tidak perlu membuatnya karena intruksi tersebut telah ada pada sistem operasi.
  • 39.
    Kesimpulan (cont’d) • Linuxshells bersalar dari UNIX Bourne, Korn, dan C shells • UNIX terdiri dari 3 jenis tipe variabel: – Configuration – Environment – Shell • Shell mendukung banyak operator, termasuk sejumlah operasi matematika. • Struktur logic yang ada pada shell diantaranya adalah sequential, decision, looping, dan case