Çift Köşeli Parantez
if koşulları çift köşeli parantez ile yazılabilir. Köşeli parantezden sonra noktalı virgül konulur.
Tek köşeli parantez ile de yazılabilir. Bu durumda "[" test komutuna denk gelir.
Şu örnek yanlıştır. Boşluk olmadığı için [test: command not found hatası alırız.
Köşeli Parantez Olmadan
Köşeli parantez olmadan da yazılabilir.
If İçinde Metod Çağırma
Metodlar sadece 0-255 arasında bir rakam dönebilir.
if koşulları çift köşeli parantez ile yazılabilir. Köşeli parantezden sonra noktalı virgül konulur.
if [[ $ans1_1 = y ]]; then
fedoraDeps
elif [[ $ans1_1 = n ]]; then
:
else
echo "Answer 'y' or 'n'"
fi
Tek Köşeli Parantez - test komutuna denk gelirTek köşeli parantez ile de yazılabilir. Bu durumda "[" test komutuna denk gelir.
if [ -f "log/server.log" ] ; then echo "log started" ; fi
Bu kullanım şeklinde "[" karakterinden sonra ve "]" karakterinden önce en az bir boşluk olmalıdır. Yani şöyle olmalı if boşluk [ boşluk ... boşluk ]. Sebebi ise şuA bit of history: this is because '[' was historically not a shell-built-in but a separate executable that received the expresson as arguments and returned a result. If you didn't surround the '[' with space, the shell would be searching $PATH for a different filename (and not find it) .
#!/bin/bash
result="test"
if [$result = "test"];
then printf "ok"
fi
Doğrusu şöyle olmalı.#!/bin/bash
result="test"
if [ "$result" = "test" ]; then
printf "ok"
fi
Not: test komutunda karşılaştırılan tipler aynı olmalı yani string ile string karşılaştırılabilir. Bir değişkeni string haline getirmek için çift tırnak içine alabiliriz.if [ "$result" != "job completed" ] ...
Köşeli Parantez Olmadan
Köşeli parantez olmadan da yazılabilir.
if is_log_started; then
echo "log started"
fi
If İçinde Metod Çağırma
Metodlar sadece 0-255 arasında bir rakam dönebilir.
function is_log_started()
{
if test -f "log/server.log"; then
return 0
fi
return 1
}
Çoğu zaman metod içindeki en son çalıştırılan komutu dönmek yeterli oluyor.function is_log_started
{
test -f "log/server.log"
}
Bu metod şöyle kullanılırif is_log_started; then
echo "log started"
fi