[ask] IF condition bash script

Discussion in 'Web Hosting' started by root001, 27 Apr 2014.

Thread Status:
Not open for further replies.
  1. root001

    root001 Poster 1.0

    Messages:
    76
    Likes Received:
    4
    Trophy Points:
    8
    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.
     
  2. indra

    indra Apprentice 2.0

    Messages:
    567
    Likes Received:
    29
    Trophy Points:
    28
    maksudnya sumber pewarna bagaimana? apa mau tulisannya jadi warna merah kalau coba1 = 1
     
    root001 likes this.
  3. root001

    root001 Poster 1.0

    Messages:
    76
    Likes Received:
    4
    Trophy Points:
    8
    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
     
  4. mustafaramadhan

    mustafaramadhan Hosting Guru

    Messages:
    3,237
    Likes Received:
    857
    Trophy Points:
    113
    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 likes this.
  5. root001

    root001 Poster 1.0

    Messages:
    76
    Likes Received:
    4
    Trophy Points:
    8
    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
     
  6. mustafaramadhan

    mustafaramadhan Hosting Guru

    Messages:
    3,237
    Likes Received:
    857
    Trophy Points:
    113
    Coba saja ganti '$a == $x' ke '$a == 1'
     
    root001 and pluto01 like this.
  7. indra

    indra Apprentice 2.0

    Messages:
    567
    Likes Received:
    29
    Trophy Points:
    28
    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 likes this.
  8. root001

    root001 Poster 1.0

    Messages:
    76
    Likes Received:
    4
    Trophy Points:
    8
    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: 29 Apr 2014
  9. indra

    indra Apprentice 2.0

    Messages:
    567
    Likes Received:
    29
    Trophy Points:
    28
    /opt/myfilescript1 - /opt/myfilescript4 isi nya apa?
    karena disimulasikan dengan loop diatas jadinya sama dengan yang sebelumnya
     
  10. root001

    root001 Poster 1.0

    Messages:
    76
    Likes Received:
    4
    Trophy Points:
    8
    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.
     
Loading...
Thread Status:
Not open for further replies.

Share This Page

Loading...