Giriş
bash kodlarken if koşulu notlarım
bash kodlarken if koşulu notlarım
Logical Kontroller
- String eşitlik için "==" kullanılır
- Sayısal Eşitlik için "eq" kullanılır
- Sayısal farklılık için "ne" kullanılır
- bash test yazısına bakabilirsiniz.
1. If koşulu tek satırsa fi'den önce ve sonra ; gelir
Örnek
Örnek
Şu kod yanlış cünkü fi'den önce ; gelmiyor.
if [ -f ~/.bashrc ]; then . ~/.bashrc fi
Şöyle yaparız
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
Örnek
Şöyle yaparız.
If koşulunda çift köşeli parantez ile içerdeki değişkenler boşluk ile ayrılmalıdır.function cgo() { if g++ -std=c++11 "$1" ; then ./a.out; fi; }
# ........................................................^
2 Test Koşulu
2.1 Çift Köşeli Parantez
Yanlış Kod
Şu kod yanlış çünkü [[ ile $x bitişik.
if [[$x = "foo"]]; then
Şu kod doğru çünkü [[ ile $x ayrıkif [[ $x = "foo" ]]; then
Örnek - eq koşuluŞöyle yaparız.
i=4
if [[ $i -eq 4 ]] && false ; then
echo this will not print
fi
if [[ $i -eq 4 ]] && true ; then
echo this will print
fi
Örnek - == KoşuluŞöyle yaparız
if [[ "$1" == "" ]] # if parameter 1 is blank
then
LOGFILE="/var/log/syslog" # LOGFILE set to /var/log/syslog
else
LOGFILE="$1" # LOGFILE set to parameter 1
fi
Bu kodun kısa halı şöyle.LOGFILE=${1:-/var/log/syslog}
Örnek - == Koşulu
Şöyle yaparız. Burada txt uzantılı dosyalar üzerinde dolaşıp bunları tek bir dosyada birleştiriyoruz. Aralarına da \n ekliyoruz. Ancak çıktı dosya da newfile.txt olduğu için for döngüsünde bu dosyayı atlamak gerekiyor. Bu yüzden cat işlemi || (or) ile yapılıyor.
for f in *.txt; do
[[ "$f" = newfile.txt ]] || { cat -- "$f"; printf "\n"; }
done > newfile.txt
Eğer newfile.txt kontrolünü yapmazsak şu hatayı alırız. Yani çıktı olan dosyayı aynı anda okumaya da çalışıyoruz anlamına gelir.
cat: newfile.txt: input file is output file
Örnek - ne Koşulu
Şöyle yaparız
if [[ $EUID -ne 0 ]]; then
echo "You must be root to run this script."
exit
fi
Örnek
Bash ile iki tane eşittir kullanılır. Şöyle yaparız.
if [ "$var" == "foo" ]; then # bash
sh ile tek eşittir kullanılır. Şöyle yaparız.if [ "$var" = "foo" ]; then # sh
ÖrnekŞöyle yaparız.
BCKGRND=yes
if [ "$BCKGRND" = "yes" ]; then
sleep 5 &
else
sleep 5
fi
Örnek
Şöyle yaparız. Burada "command substitution" yapılıyor. Sonra -n ile string'in boş olmadığı kontrol ediliyor.
if [ "$(id -u)" -eq 0 ]
then
if [ -n "$SUDO_USER" ]
then
printf "This script has to run as root (not sudo)\n" >&2
exit 1
fi
printf "OK, script run as root (not sudo)\n"
else
printf "This script has to run as root\n" >&2
exit 1
fi
3. && Kullanımı
Şöyle yaparız.
Şöyle yaparız.
if [ "$i" -eq 4 ] && command1; then
echo 'All is well'
else
echo 'i is not 4, or command1 returned non-zero'
fi
Hiç yorum yok:
Yorum Gönder