pemrograman shell2
TRANSCRIPT
Workshop Labsi
Pemrograman Shell Linux
husni.trunojoyo.ac.id
Shell
Tempat interaksi antara pengguna dan Linux Penerjemah atau Pengeksekusi Program
(Interpreter, Executor) Antarmuka teks (command line) Banyak digunakan untuk administrasi sistem
dan mengelola file Hanya ada di sistem Unix (Linux). Windows tak
punya tool canggih seperti di Linux Ditandai oleh prompt $ (user) atau # (root)
Menggunakan Shell
Interaktif
Satu atau lebih perintah shell diketik langsung pada prompt
Hasil eksekusi ditampilkan langsung setelah (atau saat) eksekusi perintah
Menulis skrip (shell scripting) Pengguna menulis beberapa baris kode
(program, skrip) File skrip dieksekusi
Interaktif
date; whoami; pwd ps top ls -la echo ”Kereeeen” a=10; echo $a b=109; echo "B bernilai :" $b
Manual Perintah Shell
Gunakan ”man” man ls man ps man file
Bagaimana mencari file dengan ekstensi tertentu? Misalnya *.jpg?
Pipeline
Echo ”aris joko faza fenny ubaid” Echo ”aris joko faza fenny ubaid” | tr ” ” ”\n” Echo ”aris joko faza fenny ubaid” | tr ” ” ”\n” |
sort Echo ”aris joko faza fenny ubaid” | tr ” ” ”\n”
| sort -r
Menulis Skrip Shell
Tulis skrip menggunakan suatu Text Editor. Simpan sebagai file teks biasa, ekstensi .sh
Ubah agar file skrip .sh tersebut bersifat executable: Baris pertama harus: #!/bin/bash Ubah agar exeutable: chmod +x nama_file.sh
Eksekusi file skrip: . /nama_file.sh
Skrip Pertama: 01.sh
Tulis 2 baris skrip berikut:
#!/bin/bash
echo "Halo, Saya belajar pemrograman shell Bash Linux."
Simpan sebagai skrip01.sh Pada shell prompt, ketik:
chmod +x skrip01.sh . /skrip01.sh
Contoh 03: 03.sh
#!/bin/bash
echo "Halo, $LOGNAME"
echo "Tanggal sekarang `date`"
echo "Pengguna: `who i am`"
echo "Direktori aktif `pwd`"
Contoh05 : secho.sh
#!/bin/sh
# Nama file skrip: kedua.sh
# Apa yang dihasilkan skrip ini?
echo "Halo dunia " # Halo dunia
echo "Halo dunia "
echo "Halo * dunia”; echo Halo * dunia
echo Halo dunia; echo "Halo" dunia
echo Halo " " dunia; echo "Halo \"*\" dunia "
echo `halo` dunia; echo 'hello' dunia
Variabel
Tidak dideklarasikan Tidak ada tipe data Tanpa spasi sebelum dan setelah ”=” Case sensitive A=10; Nama=”Nama anda”; nama = siapa anda
Contoh07: var2.sh
#!/bin/sh
# Nama file skrip: var2.sh
echo Siapa anda?
read MY_NAME
echo "Hello $MY_NAME - hope you're well."
Contoh08: var3.sh
#!/bin/sh
echo "MYVAR is: $MYVAR"
MYVAR="hi there"
echo "MYVAR is: $MYVAR"
$ MYVAR=hello
$ export MYVAR
$ ./var3.sh
Contoh09: var4.sh
#!/bin/sh
echo "Siapa nama anda?"
read USER_NAME
echo "Halooo $USER_NAME"
echo "Buat file bernama $USER_NAME_file"
touch $USER_NAME_file
#!/bin/sh
echo "Siapa nama anda?"
read USER_NAME
echo "Halooo $USER_NAME"
echo "Buat file bernama ${USER_NAME}_file"
touch ${USER_NAME}_file
echo "Test 1 2 3" >> "${USER_NAME}_file"
cat "${USER_NAME}_file"
Karakter Escape
Bagaimana menampilkan Halo dunia? Bagaimana menampilkan Halo ”dunia”
$ echo "Halo dunia" $ echo "Halo \"dunia\""
$ echo "A quote is \", backslash is \\, backtick is \`."
$ echo "A few spaces are ; dollar is \$. \$X is ${X}."
Contoh10: loop1.sh
#!/bin/bash
for i in 1 2 3 4 5
do
echo "Welcome $i times"
done
for i in 1 2 3 4 5 dapat diganti for i in {1..5}
Contoh11: loop2.sh
#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {0..10..2}
do
echo "Welcome $i times"
done
Looping: while
#!/bin/bash
COUNT=6
# bash while loop
while [ $COUNT -gt 0 ]; do
echo Value of count is: $COUNT
let COUNT=COUNT-1
done
Faktorial
#!/bin/bash
counter=$1
factorial=1
while [ $counter -gt 0 ]
do
factorial=$(( $factorial * $counter ))
counter=$(( $counter - 1 ))
done
echo $factorial
Looping: Until
#!/bin/bash
COUNT=0
until [ $COUNT -gt 5 ]; do
echo Value of count is: $COUNT
let COUNT=COUNT+1
done
Array
#!/bin/bash
ARRAY=( 'Debian Linux' 'Redhat Linux' Ubuntu Linux )
# ambil jumlah elemen array
ELEMENTS=${#ARRAY[@]}
for (( i=0;i<$ELEMENTS;i++)); do
echo ${ARRAY[${i}]}
done
Test: if
#!/bin/bash
directory="./BashScripting"
# cek direktori, atau atau tidak
if [ -d $directory ]; then
echo "Directory exists"
else
echo "Directory does not exists"
fi
Perbandingan
#!/bin/bash
NUM1=2
NUM2=2
if [ $NUM1 -eq $NUM2 ]; then
echo "Both Values are equal"
else
echo "Values are NOT equal"
fi
Perbandingan
#!/bin/bash
NUM1=2
NUM2=1
if [ $NUM1 -eq $NUM2 ]; then
echo "Both Values are equal"
elif [ $NUM1 -gt $NUM2 ]; then
echo "NUM1 is greater then NUM2"
else
echo "NUM2 is greater then NUM1"
fi
Fungsi
/bin/bash
function function_B { echo Function B. }
function function_A { echo $1 }
function function_D { echo Function D. }
function function_C { echo $1 }
Memanggil Fungsi
# Lewatkan parameter ke fungsi A
function_A "Function A."
function_B
# Lewatkan parameter ke fungsi C
function_C "Function C."
function_D
Case
#!/bin/bash
echo "Apa bahasa favorit Anda?"
echo "1) bash"
echo "2) perl"
echo "3) phyton"
echo "4) c++"
echo "5) Mene ketehe !"
read case;