[ask] IF condition bash script


Status
Not open for further replies.

root001

Poster 1.0
Selamat siang rekan2 dan matash2 DWH
maaf saya newbie izin bertanya tentang pengkondisian pada bash script jika salah tempat bisa dibantu pindahkan.
logikanya seperti ini :
.........
.........
for x in `seq 1 4` ; do
coba1=`cat /opt/myfilescript`
if [ $coba1 = 1 ] ; then
if [ $x = 1 ]; then
echo "$x. warna $x - merah - AA"
elif [ $x = 2 ]; then
echo "$x. warna $x - merah - BB"
elif [ $x = 3 ]; then
echo "$x. warna $x - merah - CC"
elif [ $x = 4 ]; then
echo "$x. warna $x - merah - DD"

else
echo "$x. warna $x - merah"
fi
else
if [ $x = 1 ]; then
echo "$x. warna $x - hitam - AA"
elif [ $x = 2 ]; then
echo "$x. warna $x - hitam - BB"
elif [ $x = 3 ]; then
echo "$x. warna $x - hitam - CC"
elif [ $x = 4 ]; then
echo "$x. warna $x - hitam - DD"

else
echo "$x. warna $x - hitam"
fi
fi

done

Nah script di atas berjalan normal tidak ada masalah.
Namun saya pengen merubah sumber perwarnanya karena dengan kondisi di atas maka semuanya akan ikut berubah. Nah saya pengennya berubahnya satu per satu sesuai nilainya saja. Jadi jika coba1 = 1 maka yg berubah jadi merah hanya $x = 1 saja yg $x =2 atau yg lainnya tidak berubah jika coba2 = tdk nilai 1 contohnya
for x in `seq 1 4` ; do
coba1=`cat /opt/myfilescript`
coba2=`cat /opt/myfilescript2`
coba3=`cat /opt/myfilescript3`
coba4=`cat /opt/myfilescript4`

jika coba1 = 1 maka hanya $x=1 yg akan merah
jika coba2 = 1 maka hanya $x=2 yg akan merah
jika coba3 = 1 maka hanya $x=3 yg akan merah
jika coba4 = 1 maka hanya $x=4 yg akan merah

selain dari nilai itu maka akan hitam
mohon bantuannya yach mastah2
terimakasih banyak sebelumnya.
 

indra

Apprentice 2.0
maksudnya sumber pewarna bagaimana? apa mau tulisannya jadi warna merah kalau coba1 = 1
 

root001

Poster 1.0
Terima kasih banyak atas replynya Mas.
Yupz benar banget Mas.
Jadi gini pada contoh script paling atas yg saya info sdh berjalan yaitu :
jika nilai dari coba1=`cat /opt/myfilescript` = 1 maka
$x = 1 merah - AA
$x = 2 merah BB
$x = 3 merah CC
$x = 4 merah DD
Nah saya pengennya :
jika nilai dari coba1=`cat /opt/myfilescript` = 1 maka
$x = 1 merah - AA
jika nilai dari coba2=`cat /opt/myfilescript1` = 1 maka
$x = 2 merah - BB
jika nilai dari coba3=`cat /opt/myfilescript2` = 1 maka
$x = 3 merah - CC
jika nilai dari coba4=`cat /opt/myfilescript3` = 1 maka
$x = 4 merah - DD
Jika selain itu maka
$x = 1 hitam - AA
$x = 2 hitam BB
$x = 3 hitam CC
$x = 4 hitam DD
Tujuannya seperti ini agar nilai masing2 1 s/d 4 bisa berbeda sesuai dgn kondisi yg ada.
saya logikanya dpt namun kurang paham terjemahkan dalam bahasa bash nya Mas
 

mustafaramadhan

Hosting Guru
Saya tidak coba, tapi apa seperti ini maksud anda:
Code:
for x in 1 2 3 4 ; do
    if [ $x == 1 ] ; then
        y="AA"
    elif [ $x == 2 ] ; then
        y="BB"
    elif [ $x == 3 ] ; then
        y="CC"
    elif [ $x == 4 ] ; then
        y="DD"
    fi

    a=$(cat /opt/myfilescript)

    if [ $a == $x ] ;  then
        echo "$x. warna $x - merah - $y"
    else
        echo "$x. warna $x - hitam"
    fi
done
 

root001

Poster 1.0
Terimakasih banyak Mas Mustafa atas replynya.
Jika kondisi seperti itu sama dgn script pertama saya Mas yg mana perubahan warnanya sama semua yg mana berdasarkan hasi dari
a=$(cat /opt/myfilescript)
Hasilnya ketika di jalankan :
[root@coba:/bin]# coba
1. warna 1 - hitam
2. warna 2 - hitam
3. warna 3 - hitam
4. warna 4 - hitam
[root@coba:/bin]#
Nah yg saya pengennya :
a=$(cat /opt/myfilescript1)
b=$(cat /opt/myfilescript2)
c=$(cat /opt/myfilescript3)
d=$(cat /opt/myfilescript4)
Nah hasil yg akan muncul nanti sesuai dari casil cat a s/d d.
[root@coba:/bin]# coba
1. warna 1 - hitam ------>>Perubahan warnanya sesuai hasil dari a=$(cat /opt/myfilescript1)
2. warna 2 - hitam ------>>Perubahan warnanya sesuai hasil dari b=$(cat /opt/myfilescript2)
3. warna 3 - hitam ------>>Perubahan warnanya sesuai hasil dari c=$(cat /opt/myfilescript3)
4. warna 4 - hitam ------>>Perubahan warnanya sesuai hasil dari d=$(cat /opt/myfilescript4)
[root@coba:/bin]#
nilainya hanya ada 2 :
jika nilai dari hasil cat = 0 maka warnanya hitam
jika nilai dari hasil cat = 1 maka warnanya merah

Sorry banget jika informasi dari saya krng jelas
Terimakasih banyak untuk mastah2 di atas yg telah meluangkan waktunya reply
 

indra

Apprentice 2.0
coba bantuin yah. dari bash nya om mustafa udah jalan sih seharusnya

main
Code:
#!/bin/sh

for x in 1 2 3 4 ; do
    if [ $x == 1 ] ; then
        y="AA"
    elif [ $x == 2 ] ; then
        y="BB"
    elif [ $x == 3 ] ; then
        y="CC"
    elif [ $x == 4 ] ; then
        y="DD"
    fi


    a=$( sh /root/test/random )
#    echo $a
    if [ $a == 1 ]; then
              echo "$x. warna $x - merah - $y"
    else
            echo "$x. warna $x - hitam - $y"
      fi
done

random
Code:
#!/bin/sh

echo $((RANDOM%4+1))

Code:
[root@dev test]# ./main
1. warna 1 - hitam - AA
2. warna 2 - hitam - BB
3. warna 3 - merah - CC
4. warna 4 - hitam - DD
[root@dev test]#

kemungkinan untuk hitam semua ada. karena belum tentu hasil random nya ada menghasilkan angka 1 (base on my case)
 

root001

Poster 1.0
Untuk Mas Mustafa dan Mas Indra Terimakasih banyak atas bantuannya sangat bermanfaat.
Sudah saya coba dgn script yg Mas2 info di atas namun belum berhasil juga sesuai dgn kebutuhan.
Lalu saya coba kombinasi dari masukan2 Mastah2 di atas dan jg dari Om google dan test2 sementara saya coba dgn seperti code di bawah dan kebetulan berjalan sesuai dgn yg diharapkan.
Tapi sepertinya codenya lumayan panjang (yg penting jalan saja dlu hehehehhe) , kira2 bisa dipersingkat ga yach dgn seperti yg Mas2 info di atas

Terimakasih banyak juga untuk pak CGs yg sdh berkenan pindahin post saya, mohon maaf jika salah room sebelumnya sehingga nambah kerjaan pak CGs :)

Code:
for x in `seq 1 4` ; do
        aa=`cat /opt/myfilescript1`
        bb=`cat /opt/myfilescript2`
        cc=`cat /opt/myfilescript3`
        dd=`cat /opt/myfilescript4`
                if [ $aa = 1 ] ; then
                if [ $x = 1 ]; then
                echo "$x. warna - Merah - AA"
                        fi
                else

                if [ $x = 1 ]; then
                        echo "$x. warna - Hitam - AA"

                fi
        fi
        if [ $bb = 1 ] ; then
                if [ $x = 2 ]; then
                echo "$x. warna  - Merah - BB"
                        fi
                else

                if [ $x = 2 ]; then
                        echo "$x. warna - Hitam - BB"

                fi
        fi
                if [ $cc = 1 ] ; then
                if [ $x = 3 ]; then
                echo "$x. warna - Merah - CC"
                        fi
                else

                if [ $x = 3 ]; then
                        echo "$x. warna - Hitam - CC"

                fi
        fi
                if [ $dd = 1 ] ; then
if [ $x = 4 ]; then
                echo "$x. warna - Merah - DD"
                        fi
                else

                if [ $x = 4 ]; then
                        echo "$x. warna - Hitam - DD"

                fi

fi

done
 
Last edited:

indra

Apprentice 2.0
/opt/myfilescript1 - /opt/myfilescript4 isi nya apa?
karena disimulasikan dengan loop diatas jadinya sama dengan yang sebelumnya
 

root001

Poster 1.0
/opt/myfilescript1 - /opt/myfilescript4 isi nya apa?
karena disimulasikan dengan loop diatas jadinya sama dengan yang sebelumnya

Isinya hanya angka 0 dan angka 1 saja Mas, tpi berubah2 sesuai kondisinya :
Sebenarnya itu hanya sepenggalan scriptnya saja masih ada script sambungannya untuk melakukan perubahan nilai seperti contoh berikut :

1)
echo ""
led=`cat /opt/myfilescript1`
if [ $led = 0 ] ; then
echo 1 > /opt/myfilescript1
echo "Warna 1 sudah di Hidupkan !!" &&
sleep 1 && /bin/coba
else
echo 0 > /opt/myfilescript1
echo "Warna 1 sudah di Matikan !!" &&
sleep 1 && /bin/coba
fi
;;
Dan seterusnya sampai angka 4
Sehingga output, ada form isian inputnya. ketika kita tekan 1 maka akan diceknya dlu jika nilainnya 0 maka akan dihidupkan dan outputnya akan dikasih warna merah dan jika nilainnya 1 maka maka akan dimatikan dan ouput warnanya jadi hitam.
 
Status
Not open for further replies.

Top