published on 16.11.2019

Bu bölümde, bash ile string manipulasyonu ile ilgili temel konuları kısa örneklerle açıklayacağım. Concatenation, append, length, substring ve sık kullanılan cut komutu…

String Concatenation

String concatenation, için stringleri peş peşe yazmak yeterlidir.

1
2
3
4
5
a="Hello"
b="There"
c="${a} ${b}"
echo "${c}"
> Hello There

+= Append

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
a=2
a+=4
echo $a
> 24

echo $a         # Variable a is string, but also an integer
> 24
((a+=12))
echo $a
> 36

Length - Number of Characters

1
2
echo $(#a)      # Returns number of characters in a string
> 2

Substring

1
2
3
string=YOUR-STRING
echo ${string:P}
echo ${string:P:L}

P, Starting position and L is length of the substring. Eğer, length belirtilmez ise P’den başlar stringin sonuna kadar olan kısım geri döndürülür.

1
2
3
4
5
6
7
8
echo $(#c)
> 11
echo $(c:3)     # Returns substring of a string staring from 3rd char.
> lo There
echo $(c:0)     # Returns the string itself. Notice the string array starts from 0.
> Hello There
echo $(c:3:2)   # Start from 3rd char go for 2 char.
> lo

Ayrıca negatif sayılar ile geriye doğru belirtmek de mümkün.

1
2
echo $(c: -5:3) # Notice the space before negative starting index.
> The

Bu konuda kullanılabilecek bir komut da cut.

1
echo "Hello There" | cut -cN-M

N başlangıç indexi, M bitiş indexi olmak üzere -c --characters belirtilen karakterleri döndürür.

Yukarıdaki örnekten farklı olarak cut komutu echo "Hello There" | cut -c3-2, ll döndürecektir. Çünkü, indexi sıfırdan değil 1’den başlar.

Şimdi bir delimeter’a göre stringi parçalayalım. Aşağıdaki örnekte -d --delimeter, -f --fields, kısa çizgiye göre stringi bölüp 3. alanı döndürmesini söylüyoruz.

1
2
3
4
str="ne-mutlu-Türküm-diyene-!"
substr=$(echo $str | cut -d'-' -f 3)
echo $substr
> Türküm

Find & Replace

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
meyve = "elma muz muz ananas"
echo ${meyve/muz/kivi}
> elma kivi muz ananas      # "meyve" stringi içerisinde bulduğu ilk "muz" substringini "kivi" ile değiştirir.
echo ${meyve//muz/kivi}     # / işareti ile yalnızca ilk substring değil, tüm örnekleri değiştirir.
> elma kivi kivi ananas
echo ${meyve/#muz/kivi}     # # işareti kullanıldığında, eğer belirtilen substring, stringin başındaysa yer alıyorsa çalışır.
> elma muz muz ananas
echo ${meyve/#elma/kivi}
> kivi muz muz ananas
echo ${meyve/%ananas/kivi}  # % işareti kullanıldığında, eğer belirtilen substring, stringin sonunda yer alıyorsa çalışır.
> elma muz muz kivi
You are reading the 3rd of 10 episodes in Bash.
Published on 16.11.2019 by Mert Bakır with commit 5ebb327.
bash
#bash #linux
Next episode:
Bash: Arrays
published on 17.11.2019

Bu yazıda, bash scriptlerindeki dizi mantığına temel bir giriş yapacağız. Bir boyutlu indexed arrayleri ve associative arrayleri (key, value pairs) ele alacağız. Başlayalım… Bash üzerinde boş bir dizi oluşturmak için aşağıdaki syntax kullanılabilir. […] 1 a=() # a is an empty array …

published on 15.11.2019

Quoting, belirli karakterlerin veya sözcüklerin özel anlamlarını kaldırmak için kullanılır. Rezerve edilmiş özel sözcüklerin belirlendikleri gibi çalışmasının önüne geçer. Bash’de üç çeşit quoting mekanizması vardır: Single Quote, Double Quote ve Backslash. Aslında bu yazıyı yazarken, amacım …

published on 16.11.2019

Bu yazıda, bash ile if sorgularını ve bu sorgularda kullanılacak karşılaştırma operatorlerini kısaca ele alacağız. […] Temel syntax aşağıdaki gibidir. […] 1 2 3 4 5 6 7 8 9 a=5 b=2 if [[ a -gt b ]]; then echo "b" elif [[ a -eq b ]]; then echo "b" else echo "b" …

published on 01.05.2020
edited on 19.01.2021

Containerlar ephemeral stroge kullanırlar. Yani container öldüğünde içindeki datada onunla birlikte yok olur gider. Bu yüzden, persistent volume‘ler kullanılır. Kalıcı olmasını istediğimiz datayı, containerın dışında tutarız. Ben, belli aralıklar ile bu volume’ü yedeklemek istiyorum. …

published on 20.11.2019

Fonksiyonlar, bölümünde argümanlardan kısaca bahsetmiştik. Peki, ya argümanı direkt scriptin dışından userdan ya da farklı bir programdan almamız gerekiyorsa ne yapacağız? Yine fonksiyona argüman gönderir gibi scripte argüman gönderebiliriz. […] 1 ./foobar.sh "foo" "bar" # …

published on 19.11.2019

Her dilde kullandığımız, tekrara düşmemek adına kullanılan en temel yapı. Fonksiyonlar, bash scriptinde aşağıdaki örnekteki gibi tanımlanabilir. function anahtar sözcüğü ardından fonksiyon adı verilir ve küme parantezi içerisinde fonksiyon tanımlanır. […] 1 2 3 4 #!/bin/bash function …