{"id":38409,"date":"2026-01-30T16:22:53","date_gmt":"2026-01-30T13:22:53","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/"},"modified":"2026-01-30T16:22:53","modified_gmt":"2026-01-30T13:22:53","slug":"shell-scriptingde-kosullu-yapilarin-temelini-anlamak","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/","title":{"rendered":"Shell Scripting&#8217;de Ko\u015fullu Yap\u0131lar\u0131n Temelini Anlamak"},"content":{"rendered":"<p><title>Shell Script if else: Ko\u015fullu Yap\u0131lar Kapsaml\u0131 Rehber<\/title><br \/>\n<body><\/p>\n<p>Shell script yazarken, program\u0131n\u0131z\u0131n belirli ko\u015fullara g\u00f6re farkl\u0131 yollar izlemesini sa\u011flamak, otomasyonun ve ak\u0131ll\u0131 sistemlerin temelini olu\u015fturur. Peki, scriptlerinizde dinamik kararlar almay\u0131 ve farkl\u0131 senaryolara uyum sa\u011flamay\u0131 nas\u0131l ba\u015far\u0131rs\u0131n\u0131z? Bu kapsaml\u0131 rehberde, shell script&#8217;lerdeki <code>if-else<\/code> yap\u0131lar\u0131n\u0131, temelden ileri d\u00fczeye kadar, bol \u00f6rneklerle ve ger\u00e7ek d\u00fcnya senaryolar\u0131yla ad\u0131m ad\u0131m inceleyece\u011fiz. B\u00f6ylece, scriptlerinizin sadece komut dizileri olmaktan \u00e7\u0131k\u0131p, ger\u00e7ek birer karar mekanizmas\u0131na d\u00f6n\u00fc\u015fmesini sa\u011flayacaks\u0131n\u0131z.<\/p>\n<h2>Shell Scripting&#8217;de Ko\u015fullu Yap\u0131lar\u0131n Temelini Anlamak<\/h2>\n<p>Bir shell script&#8217;in g\u00fcc\u00fc, sadece komutlar\u0131 s\u0131rayla \u00e7al\u0131\u015ft\u0131rmakla s\u0131n\u0131rl\u0131 de\u011fildir; ayn\u0131 zamanda belirli ko\u015fullar alt\u0131nda farkl\u0131 komutlar\u0131 y\u00fcr\u00fctme yetene\u011finden gelir. \u0130\u015fte bu noktada <code>if-else<\/code> yap\u0131lar\u0131 devreye girer. T\u0131pk\u0131 g\u00fcnl\u00fck hayatta &#8220;E\u011fer hava g\u00fczelse d\u0131\u015far\u0131 \u00e7\u0131kar\u0131m, de\u011filse evde kal\u0131r\u0131m&#8221; dememiz gibi, scriptlerimiz de &#8220;E\u011fer bu ko\u015ful do\u011fruysa \u015funu yap, aksi takdirde bunu yap&#8221; diyebilir. Bu ko\u015fullu ifadeler, scriptlerinizi daha esnek, ak\u0131ll\u0131 ve hataya dayan\u0131kl\u0131 hale getirir. \u00d6zellikle otomasyon g\u00f6revlerinde, bir dosyan\u0131n varl\u0131\u011f\u0131n\u0131 kontrol etmek, bir servisin \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 denetlemek veya kullan\u0131c\u0131dan al\u0131nan girdiyi do\u011frulamak gibi durumlarda vazge\u00e7ilmezdirler.<\/p>\n<p>Shell script&#8217;lerdeki ko\u015fullu ifadeler genellikle <code>if<\/code>, <code>else<\/code> ve <code>elif<\/code> (else if) anahtar kelimeleri etraf\u0131nda d\u00f6ner. Temel olarak, bir ko\u015fulun do\u011frulu\u011funu kontrol ederiz. E\u011fer ko\u015ful do\u011fruysa (yani komut s\u0131f\u0131r \u00e7\u0131k\u0131\u015f koduyla tamamlan\u0131rsa), <code>if<\/code> blo\u011fundaki komutlar \u00e7al\u0131\u015f\u0131r. Ko\u015ful yanl\u0131\u015fsa, script ya devam eder ya da <code>else<\/code> blo\u011fundaki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r. Birden fazla ko\u015fulu kontrol etmemiz gerekti\u011finde ise <code>elif<\/code> devreye girer. Bu yap\u0131lar, scriptlerinizin karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131n\u0131 y\u00f6netmesine olanak tan\u0131r ve onlar\u0131 basit bir komut dizisinden \u00e7ok daha fazlas\u0131 yapar. Bu sayede, scriptleriniz sadece belirli bir g\u00f6revi yerine getirmekle kalmaz, ayn\u0131 zamanda \u00e7evresel de\u011fi\u015fikliklere veya beklenmedik durumlara kar\u015f\u0131 da tepki verebilir.<\/p>\n<p>Ko\u015fullar\u0131 test etmek i\u00e7in \u00e7e\u015fitli operat\u00f6rler kullan\u0131l\u0131r. Bu operat\u00f6rler, say\u0131lar\u0131 kar\u015f\u0131la\u015ft\u0131rmak, dizeleri denetlemek veya dosya \u00f6zelliklerini kontrol etmek gibi farkl\u0131 i\u015flevlere sahiptir. \u00d6rne\u011fin, iki say\u0131n\u0131n e\u015fit olup olmad\u0131\u011f\u0131n\u0131 kontrol edebilir, bir dizenin bo\u015f olup olmad\u0131\u011f\u0131n\u0131 sorgulayabilir veya belirli bir dosyan\u0131n mevcut olup olmad\u0131\u011f\u0131n\u0131 anlayabiliriz. Bu operat\u00f6rler, ko\u015fullu ifadelerinizi olu\u015ftururken size b\u00fcy\u00fck bir esneklik sunar ve scriptlerinizin karar verme yetene\u011fini art\u0131r\u0131r. Dolay\u0131s\u0131yla, shell script&#8217;lerde ko\u015fullu yap\u0131lar\u0131 anlamak, daha g\u00fc\u00e7l\u00fc ve g\u00fcvenilir otomasyon \u00e7\u00f6z\u00fcmleri geli\u015ftirmek i\u00e7in kritik bir ad\u0131md\u0131r.<\/p>\n<h2>if-else Yap\u0131lar\u0131n\u0131 Ad\u0131m Ad\u0131m Nas\u0131l Kullan\u0131r\u0131z?<\/h2>\n<p>Shell script&#8217;lerde <code>if-else<\/code> yap\u0131lar\u0131, scriptlerinizin belirli ko\u015fullara g\u00f6re farkl\u0131 eylemler ger\u00e7ekle\u015ftirmesini sa\u011flayan temel karar mekanizmalar\u0131d\u0131r. Bu b\u00f6l\u00fcmde, bu yap\u0131lar\u0131 ad\u0131m ad\u0131m inceleyecek ve farkl\u0131 senaryolar i\u00e7in nas\u0131l kullan\u0131ld\u0131klar\u0131n\u0131 g\u00f6rece\u011fiz. Unutmay\u0131n ki, her ko\u015ful ifadesi bir komutun \u00e7\u0131k\u0131\u015f kodunu (exit status) kontrol eder. \u00c7\u0131k\u0131\u015f kodu 0 (s\u0131f\u0131r) ise ko\u015ful do\u011fru kabul edilir, aksi takdirde yanl\u0131\u015f kabul edilir.<\/p>\n<h3>Basit if \u0130fadesi: Bir Durumu Kontrol Etmek<\/h3>\n<p>En basit haliyle <code>if<\/code> ifadesi, tek bir ko\u015fulu kontrol eder ve bu ko\u015ful do\u011fruysa belirli bir kod blo\u011funu \u00e7al\u0131\u015ft\u0131r\u0131r. E\u011fer ko\u015ful yanl\u0131\u015fsa, <code>if<\/code> blo\u011fu atlan\u0131r ve script sonraki komutlarla devam eder. S\u00f6zdizimi olduk\u00e7a basittir:<\/p>\n<pre><code class=\"language-bash\">\n#!\/bin\/bash\n\n# \u00d6rnek 1: Basit if ifadesi\nsayi=10\n\nif [ $sayi -gt 5 ]; then\n    echo \"Say\u0131 5'ten b\u00fcy\u00fckt\u00fcr.\"\nfi\n\necho \"Script devam ediyor...\"\n    <\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte, <code>[ $sayi -gt 5 ]<\/code> ifadesi, <code>sayi<\/code> de\u011fi\u015fkeninin de\u011ferinin 5&#8217;ten b\u00fcy\u00fck olup olmad\u0131\u011f\u0131n\u0131 kontrol eder. <code>-gt<\/code> (greater than) say\u0131sal kar\u015f\u0131la\u015ft\u0131rma operat\u00f6r\u00fcd\u00fcr. Ko\u015ful do\u011fru oldu\u011fu i\u00e7in &#8220;Say\u0131 5&#8217;ten b\u00fcy\u00fckt\u00fcr.&#8221; \u00e7\u0131kt\u0131s\u0131n\u0131 g\u00f6rece\u011fiz. E\u011fer <code>sayi<\/code> 3 olsayd\u0131, bu mesaj g\u00f6r\u00fcnmeyecekti. <code>then<\/code> anahtar kelimesi, ko\u015ful do\u011fru oldu\u011funda \u00e7al\u0131\u015facak komut blo\u011funun ba\u015flang\u0131c\u0131n\u0131, <code>fi<\/code> ise biti\u015fini i\u015faret eder. Bu yap\u0131, genellikle bir dosyan\u0131n varl\u0131\u011f\u0131n\u0131 kontrol etmek veya bir parametrenin ayarlan\u0131p ayarlanmad\u0131\u011f\u0131n\u0131 denetlemek gibi basit kontroller i\u00e7in idealdir.<\/p>\n<h3>if-else \u0130fadesi: \u0130ki Durum Aras\u0131nda Karar Vermek<\/h3>\n<p>Bazen bir ko\u015fulun do\u011fru olmas\u0131 durumunda bir i\u015flem, yanl\u0131\u015f olmas\u0131 durumunda ise farkl\u0131 bir i\u015flem yapmak isteyebiliriz. \u0130\u015fte bu senaryoda <code>if-else<\/code> yap\u0131s\u0131 devreye girer. E\u011fer <code>if<\/code> ko\u015fulu do\u011fruysa <code>if<\/code> blo\u011fu \u00e7al\u0131\u015f\u0131r; aksi takdirde <code>else<\/code> blo\u011fu \u00e7al\u0131\u015f\u0131r. Yaln\u0131zca bir tanesi \u00e7al\u0131\u015f\u0131r, ikisi birden asla \u00e7al\u0131\u015fmaz.<\/p>\n<pre><code class=\"language-bash\">\n#!\/bin\/bash\n\n# \u00d6rnek 2: if-else ifadesi\nkullanici_adi=\"admin\"\n\nif [ \"$kullanici_adi\" == \"admin\" ]; then\n    echo \"Y\u00f6netici giri\u015fi ba\u015far\u0131l\u0131.\"\nelse\n    echo \"Ge\u00e7ersiz kullan\u0131c\u0131 ad\u0131.\"\nfi\n    <\/code><\/pre>\n<p>Burada <code>\"$kullanici_adi\" == \"admin\"<\/code> ifadesi, <code>kullanici_adi<\/code> de\u011fi\u015fkeninin &#8220;admin&#8221; dizisine e\u015fit olup olmad\u0131\u011f\u0131n\u0131 kontrol eder. <code>==<\/code> dize kar\u015f\u0131la\u015ft\u0131rma operat\u00f6r\u00fcd\u00fcr. E\u011fer <code>kullanici_adi<\/code> &#8220;admin&#8221; ise ilk mesaj, de\u011filse ikinci mesaj g\u00f6sterilir. Bu yap\u0131, kullan\u0131c\u0131 yetkilendirmesi veya belirli bir i\u015flemin ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131na g\u00f6re farkl\u0131 geri bildirimler vermek gibi durumlarda olduk\u00e7a kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h3>if-elif-else \u0130fadesi: \u00c7oklu Ko\u015fullar\u0131 Y\u00f6netmek<\/h3>\n<p>Birden fazla ko\u015fulu kontrol etmemiz ve her ko\u015fula g\u00f6re farkl\u0131 bir eylem ger\u00e7ekle\u015ftirmemiz gerekti\u011finde <code>if-elif-else<\/code> yap\u0131s\u0131n\u0131 kullan\u0131r\u0131z. <code>elif<\/code> (else if&#8217;in k\u0131saltmas\u0131), bir \u00f6nceki <code>if<\/code> veya <code>elif<\/code> ko\u015fulu yanl\u0131\u015f oldu\u011funda yeni bir ko\u015ful kontrol etmemizi sa\u011flar. Bu zincirleme yap\u0131, daha karma\u015f\u0131k karar a\u011fa\u00e7lar\u0131 olu\u015fturmam\u0131za olanak tan\u0131r.<\/p>\n<pre><code class=\"language-bash\">\n#!\/bin\/bash\n\n# \u00d6rnek 3: if-elif-else ifadesi\nnot=75\n\nif [ $not -ge 90 ]; then\n    echo \"Notunuz: A\"\nelif [ $not -ge 80 ]; then\n    echo \"Notunuz: B\"\nelif [ $not -ge 70 ]; then\n    echo \"Notunuz: C\"\nelse\n    echo \"Notunuz: D veya F\"\nfi\n    <\/code><\/pre>\n<p>Bu \u00f6rnekte, \u00f6\u011frencinin notuna g\u00f6re farkl\u0131 harf notlar\u0131 at\u0131yoruz. Script s\u0131ras\u0131yla ko\u015fullar\u0131 kontrol eder. \u0130lk do\u011fru ko\u015ful bulundu\u011funda ilgili blok \u00e7al\u0131\u015f\u0131r ve t\u00fcm yap\u0131dan \u00e7\u0131k\u0131l\u0131r. \u00d6rne\u011fin, e\u011fer not 75 ise, ilk iki ko\u015ful yanl\u0131\u015f olaca\u011f\u0131 i\u00e7in <code>elif [ $not -ge 70 ]<\/code> ko\u015fulu do\u011fru bulunur ve &#8220;Notunuz: C&#8221; \u00e7\u0131kt\u0131s\u0131 verilir. Bu yap\u0131, men\u00fc tabanl\u0131 scriptlerde kullan\u0131c\u0131 se\u00e7imlerini i\u015flemek veya farkl\u0131 hata kodlar\u0131na g\u00f6re \u00e7e\u015fitli eylemler ger\u00e7ekle\u015ftirmek i\u00e7in idealdir. Her bir <code>elif<\/code> blo\u011fu, bir sonraki kontrol edilecek ko\u015fulu temsil eder ve bu sayede scriptiniz daha ak\u0131ll\u0131 ve \u00e7ok y\u00f6nl\u00fc hale gelir.<\/p>\n<h2>Karma\u015f\u0131k Kararlar \u0130\u00e7in Mant\u0131ksal Operat\u00f6rler ve Test Y\u00f6ntemleri<\/h2>\n<p>Bazen tek bir ko\u015ful yeterli olmaz; ayn\u0131 anda birden fazla durumu kontrol etmemiz gerekebilir. \u0130\u015fte bu noktada mant\u0131ksal operat\u00f6rler ve geli\u015fmi\u015f test y\u00f6ntemleri devreye girer. Bu ara\u00e7lar, scriptlerinizin daha karma\u015f\u0131k ve n\u00fcansl\u0131 kararlar almas\u0131n\u0131 sa\u011flayarak, onlar\u0131 daha g\u00fc\u00e7l\u00fc ve esnek hale getirir.<\/p>\n<h3>Mant\u0131ksal AND (<code>&&<\/code>) ve OR (<code>||<\/code>) Operat\u00f6rleri Nas\u0131l Kullan\u0131l\u0131r?<\/h3>\n<p>Shell script&#8217;lerde mant\u0131ksal <code>AND<\/code> (<code>&&<\/code>) ve <code>OR<\/code> (<code>||<\/code>) operat\u00f6rleri, birden fazla ko\u015fulu tek bir <code>if<\/code> ifadesi i\u00e7inde birle\u015ftirmenize olanak tan\u0131r. Bu operat\u00f6rler, \u00f6zellikle karma\u015f\u0131k senaryolarda kodunuzu daha okunabilir ve y\u00f6netilebilir k\u0131lar.<\/p>\n<ul>\n<li><strong>Mant\u0131ksal AND (<code>&&<\/code>):<\/strong> \u0130ki ko\u015fulun da do\u011fru olmas\u0131 durumunda t\u00fcm ifadenin do\u011fru olmas\u0131n\u0131 sa\u011flar. E\u011fer ilk ko\u015ful yanl\u0131\u015fsa, ikinci ko\u015ful kontrol edilmez bile (short-circuiting).<\/li>\n<li><strong>Mant\u0131ksal OR (<code>||<\/code>):<\/strong> \u0130ki ko\u015fuldan en az birinin do\u011fru olmas\u0131 durumunda t\u00fcm ifadenin do\u011fru olmas\u0131n\u0131 sa\u011flar. E\u011fer ilk ko\u015ful do\u011fruysa, ikinci ko\u015ful kontrol edilmez.<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">\n#!\/bin\/bash\n\n# Mant\u0131ksal AND (&&) \u00f6rne\u011fi\nyas=25\nehliyet=\"evet\"\n\nif [ $yas -ge 18 ] && [ \"$ehliyet\" == \"evet\" ]; then\n    echo \"Araba kiralayabilirsiniz.\"\nelse\n    echo \"Araba kiralama \u015fartlar\u0131n\u0131 kar\u015f\u0131lam\u0131yorsunuz.\"\nfi\n\n# Mant\u0131ksal OR (||) \u00f6rne\u011fi\nhava=\"yagmurlu\"\nplan=\"sinema\"\n\nif [ \"$hava\" == \"yagmurlu\" ] || [ \"$plan\" == \"sinema\" ]; then\n    echo \"Bug\u00fcn kapal\u0131 alanda bir etkinlik yapaca\u011f\u0131z.\"\nelse\n    echo \"D\u0131\u015far\u0131da e\u011flenebiliriz.\"\nfi\n    <\/code><\/pre>\n<p>\u0130lk \u00f6rnekte, hem ya\u015f\u0131n 18&#8217;den b\u00fcy\u00fck e\u015fit olmas\u0131 hem de ehliyetin &#8220;evet&#8221; olmas\u0131 ko\u015fullar\u0131 aran\u0131r. \u0130kinci \u00f6rnekte ise, hava ya\u011fmurluysa veya plan sinemaysa, kapal\u0131 alanda bir etkinlik yap\u0131laca\u011f\u0131 belirtilir. Bu operat\u00f6rler, kullan\u0131c\u0131 giri\u015fi do\u011frulama, sistem durumu kontrol\u00fc veya karma\u015f\u0131k izin denetimleri gibi durumlarda kritik \u00f6neme sahiptir.<\/p>\n<h3>Dosya ve Dizin Kontrolleri: G\u00fc\u00e7l\u00fc Test Operat\u00f6rleri<\/h3>\n<p>Shell script&#8217;ler, dosya sistemiyle etkile\u015fim kurmak i\u00e7in olduk\u00e7a g\u00fc\u00e7l\u00fc test operat\u00f6rlerine sahiptir. Bu operat\u00f6rler, bir dosyan\u0131n varl\u0131\u011f\u0131n\u0131, t\u00fcr\u00fcn\u00fc (dizin mi, normal dosya m\u0131), okunabilirli\u011fini, yaz\u0131labilirli\u011fini veya bo\u015f olup olmad\u0131\u011f\u0131n\u0131 kontrol etmenizi sa\u011flar. Bu yetenek, \u00f6zellikle yedekleme scriptleri, log dosyas\u0131 y\u00f6netimi veya yap\u0131land\u0131rma dosyalar\u0131n\u0131 denetleme gibi sistem y\u00f6netimi g\u00f6revlerinde hayati rol oynar.<\/p>\n<table border=\"1\">\n<thead>\n<tr>\n<th>Operat\u00f6r<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<th>\u00d6rnek Kullan\u0131m<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>-e<\/code><\/td>\n<td>Dosya veya dizin var m\u0131?<\/td>\n<td><code>if [ -e \"\/etc\/passwd\" ]<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>-f<\/code><\/td>\n<td>Normal bir dosya m\u0131?<\/td>\n<td><code>if [ -f \"benim_dosyam.txt\" ]<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>-d<\/code><\/td>\n<td>Bir dizin mi?<\/td>\n<td><code>if [ -d \"\/home\/kullanici\" ]<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>-s<\/code><\/td>\n<td>Dosya bo\u015f de\u011fil mi? (Boyutu s\u0131f\u0131rdan b\u00fcy\u00fck m\u00fc?)<\/td>\n<td><code>if [ -s \"log.txt\" ]<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>-r<\/code><\/td>\n<td>Dosya okunabilir mi?<\/td>\n<td><code>if [ -r \"config.ini\" ]<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>-w<\/code><\/td>\n<td>Dosya yaz\u0131labilir mi?<\/td>\n<td><code>if [ -w \"output.txt\" ]<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>-x<\/code><\/td>\n<td>Dosya \u00e7al\u0131\u015ft\u0131r\u0131labilir mi?<\/td>\n<td><code>if [ -x \"my_script.sh\" ]<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre><code class=\"language-bash\">\n#!\/bin\/bash\n\n# Dosya varl\u0131\u011f\u0131 ve t\u00fcr\u00fc kontrol\u00fc\ndosya_adi=\"test_dosyasi.txt\"\ndizin_adi=\"yedekler\"\n\nif [ -f \"$dosya_adi\" ]; then\n    echo \"$dosya_adi normal bir dosyad\u0131r.\"\nelif [ -d \"$dosya_adi\" ]; then\n    echo \"$dosya_adi bir dizindir.\"\nelse\n    echo \"$dosya_adi mevcut de\u011fil veya farkl\u0131 bir t\u00fcrde.\"\nfi\n\nif [ ! -d \"$dizin_adi\" ]; then\n    echo \"$dizin_adi dizini bulunamad\u0131, olu\u015fturuluyor...\"\n    mkdir \"$dizin_adi\"\nelse\n    echo \"$dizin_adi dizini zaten mevcut.\"\nfi\n    <\/code><\/pre>\n<p>Bu \u00f6rnekte, \u00f6nce <code>test_dosyasi.txt<\/code>&#8216;nin normal bir dosya olup olmad\u0131\u011f\u0131n\u0131 kontrol ediyoruz, ard\u0131ndan <code>yedekler<\/code> dizininin varl\u0131\u011f\u0131n\u0131 denetliyor ve yoksa olu\u015fturuyoruz. <code>! -d<\/code> ifadesi, dizinin <strong>mevcut olmamas\u0131<\/strong> durumunu kontrol eder. Bu g\u00fc\u00e7l\u00fc operat\u00f6rler sayesinde, scriptleriniz dosya sistemini ak\u0131ll\u0131ca y\u00f6netebilir ve yaln\u0131zca gerekli durumlarda i\u015flem yapabilir, b\u00f6ylece hatalar\u0131 \u00f6nleyebilir ve verimlili\u011fi art\u0131rabilir.<\/p>\n<div class=\"interactive-tip\">\n        Uzman \u0130pucu: Test ifadelerinde <code>[[ ... ]]<\/code> kullanmak, <code>[ ... ]<\/code>&#8216;e g\u00f6re daha modern ve esnektir. \u00d6rne\u011fin, <code>[[ \"$dize\" == \"desen\" ]]<\/code> ile geli\u015fmi\u015f kal\u0131p e\u015fle\u015ftirmesi yapabilir veya <code>&&<\/code>\/<code>||<\/code> operat\u00f6rlerini do\u011frudan kullanabilirsiniz.\n    <\/div>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131nda if-else: Pratik Vaka Analizleri<\/h2>\n<p>Shell script&#8217;lerdeki <code>if-else<\/code> yap\u0131lar\u0131, soyut programlama kavramlar\u0131ndan ibaret de\u011fildir; aksine, g\u00fcnl\u00fck sistem y\u00f6netimi ve otomasyon g\u00f6revlerinde kar\u015f\u0131la\u015f\u0131lan ger\u00e7ek d\u00fcnya problemlerine pratik \u00e7\u00f6z\u00fcmler sunar. Bu b\u00f6l\u00fcmde, iki farkl\u0131 senaryo \u00fczerinden <code>if-else<\/code> kullan\u0131m\u0131n\u0131n ne kadar etkili olabilece\u011fini g\u00f6sterece\u011fiz.<\/p>\n<h3>Sistem Kaynaklar\u0131n\u0131 \u0130zleme ve Uyarma Script&#8217;i<\/h3>\n<p>Bir sistem y\u00f6neticisi olarak, sunucular\u0131n\u0131z\u0131n disk alan\u0131n\u0131n kritik seviyelere d\u00fc\u015fmesini veya CPU kullan\u0131m\u0131n\u0131n anormallik g\u00f6stermesini istemezsiniz. Bu senaryo, <code>if-else<\/code> yap\u0131lar\u0131 i\u00e7in m\u00fckemmel bir kullan\u0131m alan\u0131d\u0131r. A\u015fa\u011f\u0131daki script, disk kullan\u0131m\u0131n\u0131 kontrol eder ve belirli bir e\u015fi\u011fin \u00fczerindeyse bir uyar\u0131 mesaj\u0131 g\u00f6sterir.<\/p>\n<pre><code class=\"language-bash\">\n#!\/bin\/bash\n\n# Disk alan\u0131 kontrol script'i\n\nDISK_ESIGI=85  # %85'in \u00fczerinde ise uyar\u0131 ver\nLOG_DOSYASI=\"\/var\/log\/disk_kontrol.log\"\nEMAIL_ADRESI=\"admin@example.com\"\n\n# K\u00f6k dizinin (%) disk kullan\u0131m\u0131n\u0131 al\nDISK_KULLANIMI=$(df -h \/ | awk 'NR==2 {print $5}' | sed 's\/%\/\/g')\n\necho \"$(date): Disk kullan\u0131m\u0131 kontrol ediliyor. Mevcut kullan\u0131m: %$DISK_KULLANIMI\" >> \"$LOG_DOSYASI\"\n\nif [ \"$DISK_KULLANIMI\" -ge \"$DISK_ESIGI\" ]; then\n    MESAJ=\"UYARI: Disk kullan\u0131m\u0131 %$DISK_KULLANIMI'e ula\u015ft\u0131! L\u00fctfen kontrol edin.\"\n    echo \"$(date): $MESAJ\" >> \"$LOG_DOSYASI\"\n    # E-posta g\u00f6nderme fonksiyonu (ger\u00e7ek bir senaryoda mail komutu veya benzeri kullan\u0131l\u0131r)\n    echo \"$MESAJ\" | mail -s \"Disk Alan\u0131 Uyar\u0131s\u0131\" \"$EMAIL_ADRESI\"\n    echo \"Disk alan\u0131 uyar\u0131s\u0131 g\u00f6nderildi.\"\nelse\n    echo \"$(date): Disk kullan\u0131m\u0131 normal seviyelerde (%$DISK_KULLANIMI).\" >> \"$LOG_DOSYASI\"\n    echo \"Disk kullan\u0131m\u0131 normal.\"\nfi\n\n# \u00d6rnek: Belirli bir servisin durumunu kontrol etme\nSERVICE_ADI=\"apache2\" # veya nginx, docker vb.\n\nif systemctl is-active --quiet \"$SERVICE_ADI\"; then\n    echo \"$SERVICE_ADI servisi \u00e7al\u0131\u015f\u0131yor.\"\nelse\n    echo \"UYARI: $SERVICE_ADI servisi \u00e7al\u0131\u015fm\u0131yor! Yeniden ba\u015flat\u0131l\u0131yor...\"\n    sudo systemctl start \"$SERVICE_ADI\"\n    if systemctl is-active --quiet \"$SERVICE_ADI\"; then\n        echo \"$SERVICE_ADI servisi ba\u015far\u0131yla yeniden ba\u015flat\u0131ld\u0131.\"\n    else\n        echo \"HATA: $SERVICE_ADI servisi ba\u015flat\u0131lamad\u0131.\" | mail -s \"Servis Hatas\u0131\" \"$EMAIL_ADRESI\"\n    fi\nfi\n    <\/code><\/pre>\n<p>Bu script, <code>df -h \/<\/code> komutuyla k\u00f6k dizinin disk kullan\u0131m y\u00fczdesini al\u0131r. Ard\u0131ndan, bu de\u011feri \u00f6nceden tan\u0131mlanm\u0131\u015f bir e\u015fik olan <code>DISK_ESIGI<\/code> ile kar\u015f\u0131la\u015ft\u0131r\u0131r. E\u011fer kullan\u0131m e\u015fi\u011fin \u00fczerindeyse, hem log dosyas\u0131na yazar hem de belirlenen e-posta adresine bir uyar\u0131 g\u00f6nderir. Aksi takdirde, her \u015feyin yolunda oldu\u011funu belirtir. \u0130kinci k\u0131s\u0131mda ise bir servisin durumunu kontrol ederek, e\u011fer \u00e7al\u0131\u015fm\u0131yorsa yeniden ba\u015flatmay\u0131 dener ve bu duruma g\u00f6re farkl\u0131 geri bildirimler sunar. Bu vaka analizi, <code>if-else<\/code> yap\u0131lar\u0131n\u0131n sistem sa\u011fl\u0131\u011f\u0131n\u0131 proaktif olarak izlemek ve potansiyel sorunlara kar\u015f\u0131 otomatik olarak tepki vermek i\u00e7in ne kadar kritik oldu\u011funu a\u00e7\u0131k\u00e7a g\u00f6stermektedir.<\/p>\n<h3>Kullan\u0131c\u0131 Giri\u015flerini Do\u011frulama ve Y\u00f6nlendirme<\/h3>\n<p>Web uygulamalar\u0131nda veya komut sat\u0131r\u0131 ara\u00e7lar\u0131nda kullan\u0131c\u0131dan girdi almak ve bu girdiyi do\u011frulamak yayg\u0131n bir ihtiya\u00e7t\u0131r. Shell script&#8217;ler de bu t\u00fcr do\u011frulama i\u015flemlerini <code>if-else<\/code> ile kolayca yapabilir. \u00d6rne\u011fin, bir script&#8217;in belirli say\u0131da arg\u00fcman almas\u0131 veya belirli bir formatta bir parola istemesi gerekebilir.<\/p>\n<pre><code class=\"language-bash\">\n#!\/bin\/bash\n\n# Kullan\u0131c\u0131 giri\u015fi do\u011frulama script'i\n\necho \"L\u00fctfen kullan\u0131c\u0131 ad\u0131n\u0131z\u0131 girin:\"\nread KULLANICI_ADI\n\necho \"L\u00fctfen parolan\u0131z\u0131 girin:\"\nread -s PAROLA # -s ile parolay\u0131 gizle\n\n# Basit bir kullan\u0131c\u0131 ad\u0131 ve parola kontrol\u00fc (ger\u00e7ek senaryoda veritaban\u0131 veya dosya kullan\u0131l\u0131r)\nif [ \"$KULLANICI_ADI\" == \"testuser\" ] && [ \"$PAROLA\" == \"pass123\" ]; then\n    echo -e \"\\nHo\u015f geldiniz, $KULLANICI_ADI! Giri\u015f ba\u015far\u0131l\u0131.\"\n    # Ba\u015far\u0131l\u0131 giri\u015ften sonra yap\u0131lacak i\u015flemler\n    .\/dashboard.sh # Ba\u015fka bir script'i \u00e7a\u011f\u0131rabiliriz\nelif [ -z \"$KULLANICI_ADI\" ] || [ -z \"$PAROLA\" ]; then\n    echo -e \"\\nKullan\u0131c\u0131 ad\u0131 veya parola bo\u015f b\u0131rak\u0131lamaz!\"\nelse\n    echo -e \"\\nGe\u00e7ersiz kullan\u0131c\u0131 ad\u0131 veya parola.\"\n    # Hatal\u0131 giri\u015ften sonra yap\u0131lacak i\u015flemler\n    exit 1 # Script'i hata koduyla sonland\u0131r\nfi\n\n# Arg\u00fcman kontrol\u00fc \u00f6rne\u011fi\nif [ $# -eq 0 ]; then # $# script'e ge\u00e7irilen arg\u00fcman say\u0131s\u0131n\u0131 verir\n    echo \"Kullan\u0131m: $0 <dosya_ad\u0131>\"\n    exit 1\nelif [ ! -f \"$1\" ]; then # $1 ilk arg\u00fcman\u0131 temsil eder\n    echo \"Hata: '$1' dosyas\u0131 bulunamad\u0131.\"\n    exit 1\nelse\n    echo \"'$1' dosyas\u0131 i\u015fleniyor...\"\n    # Dosya i\u015fleme komutlar\u0131 buraya gelir\nfi\n    <\/code><\/pre>\n<p>Bu script, kullan\u0131c\u0131dan bir kullan\u0131c\u0131 ad\u0131 ve parola girmesini ister. <code>read -s PAROLA<\/code> komutu, parolay\u0131 gizli bir \u015fekilde okur. Ard\u0131ndan, <code>if-elif-else<\/code> yap\u0131s\u0131 ile girilen bilgileri \u00f6nceden tan\u0131mlanm\u0131\u015f de\u011ferlerle kar\u015f\u0131la\u015ft\u0131r\u0131r. E\u011fer hem kullan\u0131c\u0131 ad\u0131 hem de parola do\u011fruysa ba\u015far\u0131l\u0131 bir giri\u015f mesaj\u0131 verir ve hatta ba\u015fka bir script&#8217;i \u00e7a\u011f\u0131rabiliriz. E\u011fer herhangi biri bo\u015f b\u0131rak\u0131l\u0131rsa veya e\u015fle\u015fmezse, ilgili hata mesajlar\u0131n\u0131 g\u00f6sterir. \u0130kinci k\u0131s\u0131mda ise script&#8217;e arg\u00fcman ge\u00e7irilip ge\u00e7irilmedi\u011fini ve ge\u00e7irilen ilk arg\u00fcman\u0131n ge\u00e7erli bir dosya olup olmad\u0131\u011f\u0131n\u0131 kontrol eder. Bu t\u00fcr do\u011frulamalar, script&#8217;lerinizin kullan\u0131c\u0131 dostu olmas\u0131n\u0131 ve beklenmedik girdilerle kar\u015f\u0131la\u015ft\u0131\u011f\u0131nda bile do\u011fru \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. Bu sayede, hatal\u0131 kullan\u0131mlardan kaynaklanan sorunlar\u0131n \u00f6n\u00fcne ge\u00e7ilir ve script&#8217;lerin genel g\u00fcvenilirli\u011fi art\u0131r\u0131l\u0131r.<\/p>\n<h2>Shell Script if-else \u0130\u00e7in \u0130leri D\u00fczey \u0130pu\u00e7lar\u0131 ve En \u0130yi Uygulamalar<\/h2>\n<p><code>if-else<\/code> yap\u0131lar\u0131n\u0131 etkin bir \u015fekilde kullanmak, script&#8217;lerinizi daha sa\u011flam ve verimli hale getirir. Ancak, deneyimli kullan\u0131c\u0131lar i\u00e7in baz\u0131 ileri d\u00fczey ipu\u00e7lar\u0131 ve en iyi uygulamalar, kod kalitenizi daha da art\u0131rabilir. Bu b\u00f6l\u00fcmde, bu \u00f6nemli detaylara odaklanaca\u011f\u0131z.<\/p>\n<h3><code>case<\/code> Yap\u0131s\u0131 ile Daha Temiz Kod<\/h3>\n<p>Birden fazla <code>elif<\/code> ko\u015fulu i\u00e7eren karma\u015f\u0131k <code>if-elif-else<\/code> zincirleri, bazen okunabilirli\u011fi zorla\u015ft\u0131rabilir. Bu gibi durumlarda, <code>case<\/code> yap\u0131s\u0131 \u00e7ok daha temiz ve anla\u015f\u0131l\u0131r bir alternatif sunar. <code>case<\/code> yap\u0131s\u0131, tek bir de\u011fi\u015fkenin veya ifadenin farkl\u0131 olas\u0131 de\u011ferlerini kontrol etmek i\u00e7in tasarlanm\u0131\u015ft\u0131r.<\/p>\n<pre><code class=\"language-bash\">\n#!\/bin\/bash\n\n# if-elif yerine case \u00f6rne\u011fi\nsecim=$1 # Script'e verilen ilk arg\u00fcman\u0131 se\u00e7im olarak al\n\ncase \"$secim\" in\n    \"start\")\n        echo \"Servis ba\u015flat\u0131l\u0131yor...\"\n        # Ba\u015flatma komutlar\u0131\n        ;;\n    \"stop\")\n        echo \"Servis durduruluyor...\"\n        # Durdurma komutlar\u0131\n        ;;\n    \"restart\")\n        echo \"Servis yeniden ba\u015flat\u0131l\u0131yor...\"\n        # Yeniden ba\u015flatma komutlar\u0131\n        ;;\n    \"status\")\n        echo \"Servis durumu kontrol ediliyor...\"\n        # Durum kontrol komutlar\u0131\n        ;;\n    *) # Varsay\u0131lan durum, yukar\u0131dakilerin hi\u00e7biri e\u015fle\u015fmezse\n        echo \"Ge\u00e7ersiz se\u00e7im: '$secim'. Kullan\u0131m: start|stop|restart|status\"\n        exit 1\n        ;;\nesac\n    <\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte, script&#8217;e verilen ilk arg\u00fcmana (<code>$1<\/code>) g\u00f6re farkl\u0131 eylemler ger\u00e7ekle\u015ftirilir. Her bir <code>case<\/code> deseni (\u00f6rne\u011fin &#8220;start&#8221;), de\u011fi\u015fkenin de\u011ferine g\u00f6re e\u015fle\u015fir. <code>*)<\/code> deseni, hi\u00e7bir desenin e\u015fle\u015fmemesi durumunda \u00e7al\u0131\u015facak varsay\u0131lan blo\u011fu temsil eder. Her bir desen blo\u011fu <code>;;<\/code> ile sonland\u0131r\u0131l\u0131r. <code>case<\/code> yap\u0131s\u0131, \u00f6zellikle men\u00fc tabanl\u0131 uygulamalar veya komut sat\u0131r\u0131 arg\u00fcmanlar\u0131n\u0131 i\u015flerken kodunuzu \u00e7ok daha d\u00fczenli hale getirir.<\/p>\n<h3>Hata Y\u00f6netimi ve <code>set -e<\/code><\/h3>\n<p>Shell script&#8217;lerde hata y\u00f6netimi, script&#8217;lerinizin beklenmedik durumlarda bile g\u00fcvenilir bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in kritik \u00f6neme sahiptir. Varsay\u0131lan olarak, bir komut hata verse bile (s\u0131f\u0131r olmayan \u00e7\u0131k\u0131\u015f kodu d\u00f6nd\u00fcrse bile) script \u00e7al\u0131\u015fmaya devam edebilir. Bu, istenmeyen sonu\u00e7lara yol a\u00e7abilir. <code>set -e<\/code> komutu, bu davran\u0131\u015f\u0131 de\u011fi\u015ftirir.<\/p>\n<pre><code class=\"language-bash\">\n#!\/bin\/bash\n\nset -e # Herhangi bir komut hata verirse script'i sonland\u0131r\n\necho \"\u0130lk komut \u00e7al\u0131\u015f\u0131yor...\"\ncp \/dosya\/yok \/hedef\/yok # Bu komut hata verecek\n\necho \"Bu mesaj asla g\u00f6r\u00fcnmeyecek (\u00e7\u00fcnk\u00fc \u00fcstteki komut hata verdi).\"\n    <\/code><\/pre>\n<p><code>set -e<\/code> kullan\u0131ld\u0131\u011f\u0131nda, e\u011fer bir komut s\u0131f\u0131r olmayan bir \u00e7\u0131k\u0131\u015f koduyla sonu\u00e7lan\u0131rsa, script hemen sonlan\u0131r. Bu, hatalar\u0131n erken fark edilmesine ve istenmeyen yan etkilerin \u00f6nlenmesine yard\u0131mc\u0131 olur. Ancak, baz\u0131 durumlarda bir komutun hata vermesini bekleyebilir ve bu hatay\u0131 kendiniz y\u00f6netmek isteyebilirsiniz. Bu t\u00fcr durumlarda, <code>if<\/code> ifadesiyle komutun \u00e7\u0131k\u0131\u015f kodunu kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">\n#!\/bin\/bash\n\n# Hata y\u00f6netimli \u00f6rnek\necho \"Kullan\u0131c\u0131 listesi al\u0131n\u0131yor...\"\ngrep \"root\" \/etc\/passwd_yok > \/dev\/null 2>&1 # Hata verecek komut\n\nif [ $? -ne 0 ]; then # $? son komutun \u00e7\u0131k\u0131\u015f kodunu verir\n    echo \"Hata: 'root' kullan\u0131c\u0131s\u0131 bulunamad\u0131 veya dosya mevcut de\u011fil.\"\n    # Hata durumunda yap\u0131lacak \u00f6zel i\u015flemler\n    exit 1\nelse\n    echo \"'root' kullan\u0131c\u0131s\u0131 bulundu.\"\nfi\n    <\/code><\/pre>\n<p>Burada <code>grep<\/code> komutu hata verse bile (\u00e7\u00fcnk\u00fc dosya yok), <code>set -e<\/code> kullan\u0131lmad\u0131\u011f\u0131 i\u00e7in script \u00e7al\u0131\u015fmaya devam eder. <code>if [ $? -ne 0 ]<\/code> ifadesi, <code>grep<\/code> komutunun \u00e7\u0131k\u0131\u015f kodunu kontrol eder. E\u011fer s\u0131f\u0131r de\u011filse (yani hata varsa), \u00f6zel hata mesaj\u0131 g\u00f6sterilir ve script kontroll\u00fc bir \u015fekilde sonland\u0131r\u0131l\u0131r. Bu yakla\u015f\u0131m, scriptlerinizin daha sa\u011flam ve \u00f6ng\u00f6r\u00fclebilir olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>Kod Okunabilirli\u011fi ve Yorumlama<\/h3>\n<p>Her ne kadar teknik bir makale olsa da, shell script&#8217;ler de di\u011fer programlama dilleri gibi okunabilir olmal\u0131d\u0131r. Karma\u015f\u0131k <code>if-else<\/code> yap\u0131lar\u0131 kullan\u0131rken, kodunuzu anla\u015f\u0131l\u0131r k\u0131lmak i\u00e7in yorumlar eklemek ve uygun girintileme kullanmak \u00e7ok \u00f6nemlidir. Bu, hem sizin gelecekteki revizyonlar\u0131n\u0131zda hem de script&#8217;inizi kullanacak veya geli\u015ftirecek di\u011fer ki\u015filer i\u00e7in b\u00fcy\u00fck kolayl\u0131k sa\u011flar.<\/p>\n<ul>\n<li><strong>Yorumlar:<\/strong> Her karma\u015f\u0131k ko\u015ful blo\u011funun veya kritik mant\u0131k par\u00e7as\u0131n\u0131n ne i\u015fe yarad\u0131\u011f\u0131n\u0131 a\u00e7\u0131klayan yorumlar ekleyin (<code># Bu bir yorumdur<\/code>).<\/li>\n<li><strong>Girintileme:<\/strong> <code>if<\/code>, <code>then<\/code>, <code>else<\/code>, <code>elif<\/code> ve <code>fi<\/code> anahtar kelimeleri aras\u0131nda tutarl\u0131 girintileme kullanarak kod bloklar\u0131n\u0131 g\u00f6rsel olarak ay\u0131r\u0131n. Bu, kodun yap\u0131s\u0131n\u0131 anlamay\u0131 kolayla\u015ft\u0131r\u0131r.<\/li>\n<li><strong>De\u011fi\u015fken \u0130simleri:<\/strong> Anlaml\u0131 ve a\u00e7\u0131klay\u0131c\u0131 de\u011fi\u015fken isimleri kullan\u0131n (\u00f6rn. <code>DISK_ESIGI<\/code> yerine <code>DE<\/code> kullanmaktan ka\u00e7\u0131n\u0131n).<\/li>\n<\/ul>\n<div class=\"interactive-tip\">\n        Mobil Uyumluluk Notu: Shell script&#8217;ler do\u011frudan web sayfalar\u0131 \u00fcretmese de, web servisleriyle entegre \u00e7al\u0131\u015fan script&#8217;ler, JSON veya HTML \u00e7\u0131kt\u0131s\u0131 \u00fcretirken ko\u015fullu mant\u0131kla mobil cihazlara \u00f6zel i\u00e7erik veya stil referanslar\u0131 ekleyebilir. \u00d6rne\u011fin, bir scriptin \u00e7\u0131kt\u0131s\u0131n\u0131 i\u015fleyen bir web sunucusu, kullan\u0131c\u0131 arac\u0131s\u0131na (User-Agent) g\u00f6re farkl\u0131 HTML \u015fablonlar\u0131 sunmak i\u00e7in shell script&#8217;ten gelen verileri ko\u015fullu olarak kullanabilir. Bu, dolayl\u0131 yoldan mobil uyumlu deneyimler olu\u015fturmaya yard\u0131mc\u0131 olabilir.\n    <\/div>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>Shell script&#8217;lerdeki <code>if-else<\/code> yap\u0131lar\u0131, otomasyon ve sistem y\u00f6netimi g\u00f6revlerinde dinamik kararlar alman\u0131n temelini olu\u015fturur. Bu rehber boyunca, basit <code>if<\/code> ifadelerinden karma\u015f\u0131k <code>if-elif-else<\/code> zincirlerine, mant\u0131ksal operat\u00f6rlerin kullan\u0131m\u0131ndan dosya sistemi kontrollerine kadar geni\u015f bir yelpazeyi ele ald\u0131k. Ayr\u0131ca, ger\u00e7ek d\u00fcnya senaryolar\u0131yla bu yap\u0131lar\u0131n pratik uygulamalar\u0131n\u0131 g\u00f6rd\u00fck ve <code>case<\/code> yap\u0131s\u0131, hata y\u00f6netimi ve kod okunabilirli\u011fi gibi ileri d\u00fczey ipu\u00e7lar\u0131yla scriptlerinizi daha sa\u011flam ve y\u00f6netilebilir hale getirme yollar\u0131n\u0131 ke\u015ffettik. Art\u0131k shell script&#8217;leriniz sadece bir dizi komut olmaktan \u00e7\u0131k\u0131p, ak\u0131ll\u0131 ve adaptif \u00e7\u00f6z\u00fcmlere d\u00f6n\u00fc\u015febilir. Bu bilgilerle, daha g\u00fcvenilir ve verimli otomasyon \u00e7\u00f6z\u00fcmleri geli\u015ftirmeye haz\u0131rs\u0131n\u0131z.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<ol>\n<li>\n            <strong><code>[ ]<\/code> ile <code>[[ ]]<\/code> aras\u0131ndaki fark nedir?<\/strong><\/p>\n<p><code>[ ]<\/code> (test komutu), POSIX uyumlu ve daha eski bir s\u00f6zdizimidir. <code>[[ ]]<\/code> (yeni test komutu), Bash, Zsh gibi modern kabuklara \u00f6zg\u00fcd\u00fcr ve daha geli\u015fmi\u015f \u00f6zellikler sunar. \u00d6rne\u011fin, <code>&&<\/code> ve <code>||<\/code> gibi mant\u0131ksal operat\u00f6rleri do\u011frudan kullanabilir, kal\u0131p e\u015fle\u015ftirmesi yapabilir ve bo\u015f de\u011fi\u015fkenlerin neden oldu\u011fu hatalardan daha iyi korunur. Genel olarak, Bash script&#8217;lerinde <code>[[ ]]<\/code> kullanmak daha g\u00fcvenli ve esnektir.<\/p>\n<\/li>\n<li>\n            <strong>Say\u0131sal ve dize kar\u015f\u0131la\u015ft\u0131rmalar\u0131 i\u00e7in hangi operat\u00f6rleri kullanmal\u0131y\u0131m?<\/strong><\/p>\n<p>Say\u0131sal kar\u015f\u0131la\u015ft\u0131rmalar i\u00e7in <code>-eq<\/code> (e\u015fit), <code>-ne<\/code> (e\u015fit de\u011fil), <code>-gt<\/code> (b\u00fcy\u00fck), <code>-ge<\/code> (b\u00fcy\u00fck e\u015fit), <code>-lt<\/code> (k\u00fc\u00e7\u00fck), <code>-le<\/code> (k\u00fc\u00e7\u00fck e\u015fit) operat\u00f6rlerini kullan\u0131n. Dize kar\u015f\u0131la\u015ft\u0131rmalar\u0131 i\u00e7in <code>==<\/code> (e\u015fit), <code>!=<\/code> (e\u015fit de\u011fil), <code><<\/code> (k\u00fc\u00e7\u00fck), <code>><\/code> (b\u00fcy\u00fck) operat\u00f6rlerini kullan\u0131n. Dize kar\u015f\u0131la\u015ft\u0131rmalar\u0131nda tek t\u0131rnak (<code>'<\/code>) yerine \u00e7ift t\u0131rnak (<code>\"<\/code>) kullanmak, de\u011fi\u015fkenlerin do\u011fru \u015fekilde geni\u015flemesini sa\u011flar.<\/p>\n<\/li>\n<li>\n            <strong><code>if<\/code> ko\u015fulunda birden fazla komutu nas\u0131l \u00e7al\u0131\u015ft\u0131rabilirim?<\/strong><\/p>\n<p><code>if<\/code>, <code>then<\/code> ve <code>fi<\/code> aras\u0131na istedi\u011finiz kadar komut ekleyebilirsiniz. Her komutu yeni bir sat\u0131ra yazman\u0131z yeterlidir. Shell, <code>then<\/code> ile <code>fi<\/code> aras\u0131ndaki t\u00fcm komutlar\u0131 s\u0131rayla y\u00fcr\u00fctecektir. \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-bash\">\nif [ -f \"dosya.txt\" ]; then\n    echo \"Dosya mevcut.\"\n    cat dosya.txt\n    ls -l dosya.txt\nfi\n            <\/code><\/pre>\n<\/li>\n<li>\n            <strong>Bir <code>if<\/code> ifadesinde komutun \u00e7\u0131k\u0131\u015f kodunu nas\u0131l kontrol ederim?<\/strong><\/p>\n<p>Son \u00e7al\u0131\u015ft\u0131r\u0131lan komutun \u00e7\u0131k\u0131\u015f kodunu <code>$?<\/code> \u00f6zel de\u011fi\u015fkeniyle kontrol edebilirsiniz. Genellikle <code>0<\/code> (s\u0131f\u0131r) ba\u015far\u0131y\u0131, s\u0131f\u0131rdan farkl\u0131 bir de\u011fer ise hatay\u0131 g\u00f6sterir. \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-bash\">\ngrep \"hata\" log.txt > \/dev\/null\nif [ $? -ne 0 ]; then\n    echo \"Log dosyas\u0131nda hata bulunamad\u0131.\"\nelse\n    echo \"Log dosyas\u0131nda hata bulundu.\"\nfi\n            <\/code><\/pre>\n<\/li>\n<li>\n            <strong>Daha h\u0131zl\u0131 ko\u015ful kontrol\u00fc i\u00e7in ipu\u00e7lar\u0131 var m\u0131?<\/strong><\/p>\n<p>Evet, mant\u0131ksal <code>&&<\/code> ve <code>||<\/code> operat\u00f6rleri \"short-circuiting\" \u00f6zelli\u011fi sayesinde performans\u0131 art\u0131rabilir. \u00d6rne\u011fin, <code>ko\u015ful1 && ko\u015ful2<\/code> ifadesinde, e\u011fer <code>ko\u015ful1<\/code> yanl\u0131\u015fsa, <code>ko\u015ful2<\/code> asla kontrol edilmez. Benzer \u015fekilde, <code>ko\u015ful1 || ko\u015ful2<\/code> ifadesinde, e\u011fer <code>ko\u015ful1<\/code> do\u011fruysa, <code>ko\u015ful2<\/code> asla kontrol edilmez. Bu, \u00f6zellikle maliyetli komutlar\u0131 i\u00e7eren ko\u015fullarda \u00f6nemli bir performans kazanc\u0131 sa\u011flayabilir. Ayr\u0131ca, karma\u015f\u0131k <code>if-elif-else<\/code> zincirleri yerine uygun durumlarda <code>case<\/code> yap\u0131s\u0131n\u0131 kullanmak da genellikle daha h\u0131zl\u0131 ve okunabilir bir \u00e7\u00f6z\u00fcmd\u00fcr.<\/p>\n<\/li>\n<\/ol>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Shell Script if else: Ko\u015fullu Yap\u0131lar Kapsaml\u0131 Rehber Shell script yazarken, program\u0131n\u0131z\u0131n belirli ko\u015fullara g\u00f6re farkl\u0131 yollar izlemesini&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1319],"tags":[],"class_list":{"0":"post-38409","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-powershell","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Shell Scripting&#039;de Ko\u015fullu Yap\u0131lar\u0131n Temelini Anlamak<\/title>\n<meta name=\"description\" content=\"Shell script yazarken, program\u0131n\u0131z\u0131n belirli ko\u015fullara g\u00f6re farkl\u0131 yollar izlemesini sa\u011flamak, otomasyonun ve ak\u0131ll\u0131 sistemlerin temelini olu\u015fturur. Peki, scriptlerinizde dinamik kararlar almay\u0131 ve farkl\u0131 senaryolara uyum sa\u011flamay\u0131 nas\u0131l ba\u015far\u0131rs\u0131n\u0131z? Bu kapsaml\u0131 rehberde, shell script&#039;lerdeki if-else yap\u0131lar\u0131n\u0131, temelden ileri d\u00fczeye kadar, bol \u00f6rneklerle ve ger\u00e7ek d\u00fcnya senaryolar\u0131yla ad\u0131m ad\u0131m inceleyece\u011fiz. B\u00f6ylece, scriptlerinizin sadece komut dizileri olmaktan \u00e7\u0131k\u0131p, ger\u00e7ek birer karar mekanizmas\u0131na d\u00f6n\u00fc\u015fmesini sa\u011flayacaks\u0131n\u0131z.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Shell Scripting&#039;de Ko\u015fullu Yap\u0131lar\u0131n Temelini Anlamak\" \/>\n<meta property=\"og:description\" content=\"Shell script yazarken, program\u0131n\u0131z\u0131n belirli ko\u015fullara g\u00f6re farkl\u0131 yollar izlemesini sa\u011flamak, otomasyonun ve ak\u0131ll\u0131 sistemlerin temelini olu\u015fturur. Peki, scriptlerinizde dinamik kararlar almay\u0131 ve farkl\u0131 senaryolara uyum sa\u011flamay\u0131 nas\u0131l ba\u015far\u0131rs\u0131n\u0131z? Bu kapsaml\u0131 rehberde, shell script&#039;lerdeki if-else yap\u0131lar\u0131n\u0131, temelden ileri d\u00fczeye kadar, bol \u00f6rneklerle ve ger\u00e7ek d\u00fcnya senaryolar\u0131yla ad\u0131m ad\u0131m inceleyece\u011fiz. B\u00f6ylece, scriptlerinizin sadece komut dizileri olmaktan \u00e7\u0131k\u0131p, ger\u00e7ek birer karar mekanizmas\u0131na d\u00f6n\u00fc\u015fmesini sa\u011flayacaks\u0131n\u0131z.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-30T13:22:53+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Shell Scripting&#8217;de Ko\u015fullu Yap\u0131lar\u0131n Temelini Anlamak\",\"datePublished\":\"2026-01-30T13:22:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/\"},\"wordCount\":3063,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"PowerShell\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/\",\"name\":\"Shell Scripting'de Ko\u015fullu Yap\u0131lar\u0131n Temelini Anlamak\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-30T13:22:53+00:00\",\"description\":\"Shell script yazarken, program\u0131n\u0131z\u0131n belirli ko\u015fullara g\u00f6re farkl\u0131 yollar izlemesini sa\u011flamak, otomasyonun ve ak\u0131ll\u0131 sistemlerin temelini olu\u015fturur. Peki, scriptlerinizde dinamik kararlar almay\u0131 ve farkl\u0131 senaryolara uyum sa\u011flamay\u0131 nas\u0131l ba\u015far\u0131rs\u0131n\u0131z? Bu kapsaml\u0131 rehberde, shell script'lerdeki if-else yap\u0131lar\u0131n\u0131, temelden ileri d\u00fczeye kadar, bol \u00f6rneklerle ve ger\u00e7ek d\u00fcnya senaryolar\u0131yla ad\u0131m ad\u0131m inceleyece\u011fiz. B\u00f6ylece, scriptlerinizin sadece komut dizileri olmaktan \u00e7\u0131k\u0131p, ger\u00e7ek birer karar mekanizmas\u0131na d\u00f6n\u00fc\u015fmesini sa\u011flayacaks\u0131n\u0131z.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Shell Scripting&#8217;de Ko\u015fullu Yap\u0131lar\u0131n Temelini Anlamak\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Shell Scripting'de Ko\u015fullu Yap\u0131lar\u0131n Temelini Anlamak","description":"Shell script yazarken, program\u0131n\u0131z\u0131n belirli ko\u015fullara g\u00f6re farkl\u0131 yollar izlemesini sa\u011flamak, otomasyonun ve ak\u0131ll\u0131 sistemlerin temelini olu\u015fturur. Peki, scriptlerinizde dinamik kararlar almay\u0131 ve farkl\u0131 senaryolara uyum sa\u011flamay\u0131 nas\u0131l ba\u015far\u0131rs\u0131n\u0131z? Bu kapsaml\u0131 rehberde, shell script'lerdeki if-else yap\u0131lar\u0131n\u0131, temelden ileri d\u00fczeye kadar, bol \u00f6rneklerle ve ger\u00e7ek d\u00fcnya senaryolar\u0131yla ad\u0131m ad\u0131m inceleyece\u011fiz. B\u00f6ylece, scriptlerinizin sadece komut dizileri olmaktan \u00e7\u0131k\u0131p, ger\u00e7ek birer karar mekanizmas\u0131na d\u00f6n\u00fc\u015fmesini sa\u011flayacaks\u0131n\u0131z.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/","og_locale":"tr_TR","og_type":"article","og_title":"Shell Scripting'de Ko\u015fullu Yap\u0131lar\u0131n Temelini Anlamak","og_description":"Shell script yazarken, program\u0131n\u0131z\u0131n belirli ko\u015fullara g\u00f6re farkl\u0131 yollar izlemesini sa\u011flamak, otomasyonun ve ak\u0131ll\u0131 sistemlerin temelini olu\u015fturur. Peki, scriptlerinizde dinamik kararlar almay\u0131 ve farkl\u0131 senaryolara uyum sa\u011flamay\u0131 nas\u0131l ba\u015far\u0131rs\u0131n\u0131z? Bu kapsaml\u0131 rehberde, shell script'lerdeki if-else yap\u0131lar\u0131n\u0131, temelden ileri d\u00fczeye kadar, bol \u00f6rneklerle ve ger\u00e7ek d\u00fcnya senaryolar\u0131yla ad\u0131m ad\u0131m inceleyece\u011fiz. B\u00f6ylece, scriptlerinizin sadece komut dizileri olmaktan \u00e7\u0131k\u0131p, ger\u00e7ek birer karar mekanizmas\u0131na d\u00f6n\u00fc\u015fmesini sa\u011flayacaks\u0131n\u0131z.","og_url":"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-30T13:22:53+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Shell Scripting&#8217;de Ko\u015fullu Yap\u0131lar\u0131n Temelini Anlamak","datePublished":"2026-01-30T13:22:53+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/"},"wordCount":3063,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["PowerShell"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/","url":"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/","name":"Shell Scripting'de Ko\u015fullu Yap\u0131lar\u0131n Temelini Anlamak","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-30T13:22:53+00:00","description":"Shell script yazarken, program\u0131n\u0131z\u0131n belirli ko\u015fullara g\u00f6re farkl\u0131 yollar izlemesini sa\u011flamak, otomasyonun ve ak\u0131ll\u0131 sistemlerin temelini olu\u015fturur. Peki, scriptlerinizde dinamik kararlar almay\u0131 ve farkl\u0131 senaryolara uyum sa\u011flamay\u0131 nas\u0131l ba\u015far\u0131rs\u0131n\u0131z? Bu kapsaml\u0131 rehberde, shell script'lerdeki if-else yap\u0131lar\u0131n\u0131, temelden ileri d\u00fczeye kadar, bol \u00f6rneklerle ve ger\u00e7ek d\u00fcnya senaryolar\u0131yla ad\u0131m ad\u0131m inceleyece\u011fiz. B\u00f6ylece, scriptlerinizin sadece komut dizileri olmaktan \u00e7\u0131k\u0131p, ger\u00e7ek birer karar mekanizmas\u0131na d\u00f6n\u00fc\u015fmesini sa\u011flayacaks\u0131n\u0131z.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/shell-scriptingde-kosullu-yapilarin-temelini-anlamak\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Shell Scripting&#8217;de Ko\u015fullu Yap\u0131lar\u0131n Temelini Anlamak"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38409","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=38409"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38409\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=38409"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=38409"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=38409"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}