2 Nisan 2019 Salı

bash kodlama - while döngüsü

Giriş
Açıklaması şöyle. [ ...] test işlemi sadece değişkenler için kullanılır.
[ .. ] is not part of shell syntax like if statements. It is not equivalent to parentheses in C-like languages, if (foo) { bar; }, and should not be wrapped around commands to test.
[ is just regular command, like whoami or grep, but with a funny name (see ls -l /bin/[). It's a shorthand for test.
If you want to check the exit status of a certain command, use that command directly.
If you want to check the output of a command, use "$(..)" to get its output, and then use test or [/[[ to do a string comparison:
Örnek 
Değişken kullanmak için şöyle yaparız.
#!/bin/bash
COUNTER=0

while [ "$COUNTER" -lt 10 ] && ps aux | grep -q "[r]elayevent.sh"   ; do

  sleep 3

  let COUNTER+=1

done
Örnek
Şu kod, ps alt komutu [...] içinde kullandığı için hata verir.
COUNTER=0
while [ ps aux | grep "[r]elayevent.sh" ] && [ "$COUNTER" -lt 10 ]; do
    sleep 3
    let COUNTER+=1
done
Örnek
Aynı değişkeni iki farklı değerler karşılaştırmak için şöyle yaparız
while [  "$choice" != "yes" ] && [ "$choice" != "no" ]
Örnek
Sonsuz döngü kurmak için şöyle yaparız.
#!/bin/bash

while true; do
  echo "something" >> bash.txt
done
Örnek
Sonsuz döngü kurmak için şöyle yaparız. Bu sefer true yerine built-in command olan ":" kullanılıyor.
while :
do
  something
done
Şöyle yaparız.
while :
do
  sleep 10
done
Örnek
Komutun exit kodunu kullanarak dosyanın tüm satırlarını okumak için şöyle yaparız.
#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
  echo "Text read from file: $line"
done < "$1"
Aynı satırları silmek için buradaki kod kullanılabilir.
Örnek
Break ile çıkmak için şöyle yaparız.
#!/bin/bash

while true
do
    echo "Please input anything here: "
    read INPUT

    if [ `expr $INPUT % 5` -eq 0 ]; then
        echo "you entered wrong"
        break
    else
        echo "you entered right"
    fi
done
Örnek
Script'e verilen parametreleri parse etmek için şöyle yaparız.
while getopts ":d:f:p:e:" o; do
  case "${o}" in
        d)
            SDOMAIN=${OPTARG}
            ;;
        f)
            FROM=${OPTARG}
            ;;
        p)
            PAGER=${OPTARG}
            ;; 
        e)
            DESTEXT=${OPTARG}
            ;;                       
        *)
            show_usage
            ;;          
    esac
done

Hiç yorum yok:

Yorum Gönder