Sabtu, 19 November 2011

Shell Programming

1. Buatlah program salin.sh yang menyalin file (copy sebagai berikut :
salin.sh file-asal file-tujuan
Dengan ketentuan :
- Bila file asal tidak ada, berikan pesan, salin gagal.
- Bila file tujuan ada dan file tersebut adalah directory, beri pesan bahwa file
tidak bisa disalin ke direktori
- Bila file tujuan ada dan file biasa, beri pesan apakan file tersebut akan
dihapus, bila dijawab dengan “Y”, maka copy file tersebut
- Bila file tujuan belum ada, lakukan copy
Untuk mengambil nama file, gunakan parameter $1 dan $2. Bila jumlah
parameter tidak sama ($#) dengan 2, maka beri pesan exit = -1
#!/bin/sh

if [ $# -ne 2 ]
then
echo "Error, usage: salin.sh file-asal file-tujuan"
exit -1
fi

fasal=$1
ftujuan=$2

echo "salin.sh $fasal $ftujuan"

if [ -f $fasal ]
then
if [ -d $ftujuan ]
then
echo "File tidak bisa disalin ke directory."
exit -1
fi

if [ -f $ftujuan ]
then
echo -n "Timpa ? "
read timpa
if [ $timpa = "Y" -o $timpa = "y" ]
then
cp -f $fasal $ftujuan
fi
else
cp $fasal $ftujuan
fi
else
echo "Salin gagal"
exit -1
fi

2. Buat program yang memeriksa nama direktori, jika parameter tersebut adalah
direktori, maka jalankan instruksi ls –ld pada direktori tersebut. Namakan
program tersebut checkdir.sh. Gunakan notasi [ -d NamaDirektori ] dan pilih
logical && atau || pada level shell.
#!/bin/sh

if [ $# -ne 1 ]
then
echo "Error, usage: checkdir.sh DirectoryName"
exit -1
fi

dirname=$1

[ -d $dirname ] && ls -ld $dirname

3. Dengan shell script pph.sh, hitung PPH per tahun dengan ketentuan
sebagai berikut :
- 10 juta pertama PPH 15%
- 25 juta berikutnya (sisa) PPH 25%
- Bila masih ada sisa, maka sisa tersebut PPH 35%
Contoh :
Gaji 8 juta
PPH = 15% * 8 juta
Gaji 12 juta
PPH =15% * 10 juta + 25% * (12-10) juta
Gaji 60 juta
PPH = 15% * 10 juta + 25% * 25 juta + 35% * (60-10-25) juta
Debugging : untuk melakukan tracing (debug) gunakan opsi –x pada
eksekusi shell.
#!/bin/sh


echo -n "Gaji ? "

read gaji


if [ $gaji -le 10000000 ]

then

ppn1=`expr $gaji \* 15 / 100`

ppn2=0

ppn3=0

else

gaji=`expr $gaji - 10000000`
if [ $gaji -le 25000000 ]

then

ppn1=`expr 10000000 \* 15 / 100`

ppn2=`expr $gaji \* 25 / 100`

ppn3=0

else

ppn1=`expr 10000000 \* 15 / 100`

ppn2=`expr 25000000 \* 25 / 100`

gaji=`expr $gaji - 25000000`

ppn3=`expr $gaji \* 35 / 100`

fi

fi


ppn=`expr $ppn1 + $ppn2 + $ppn3`


echo "PPN = $ppn"

1 komentar: