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 single quote ve double quote karşılaştırması yapmaktı. Sonra, hazır yeri gelmişken backslash’dan da bahsedelim, dedim. Kendisini hemen aradan çıkarıp asıl konuya geçiyorum.

Backslash

Klasik. Escape Character. Exact words from gnu.org:

A non-quoted backslash ‘\’ is the Bash escape character. It preserves the literal value of the next character that follows, with the exception of newline. If a \newline pair appears, and the backslash itself is not quoted, the \newline is treated as a line continuation (that is, it is removed from the input stream and effectively ignored).

Single Quotes vs Double Quotes

Aşağıdaki örnek aslında ikisi arasındaki temel farkı anlatıyor. Double quote içerisinde dolar, grave accent, backslash gibi karakterler özellklerini korurlar. Single quote ise içeriği olduğu gibi yazar, tüm özel karakterler özelliğini yitirir.

1
2
3
4
echo "$(echo "hello there")"
> hello there
echo '$(echo "hello there")'
> (echo "hello there")

Single Quotes: Enclosing characters in single quotes (‘'’) preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash.

Double Quotes: Enclosing characters in double quotes (‘"’) preserves the literal value of all characters within the quotes, with the exception of ‘$’, ‘`’, ‘\’.

The backslash retains its special meaning only when followed by one of the following characters: ‘$’, ‘`’, ‘"’, ‘\’, or newline. Within double quotes, backslashes that are followed by one of these characters are removed. Backslashes preceding characters without a special meaning are left unmodified. A double quote may be quoted within double quotes by preceding it with a backslash.

You are reading the 5th of 10 episodes in Bash.
Published on 15.11.2019 by Mert Bakır with commit 5ebb327.
bash
#bash #linux
Next episode:
Bash: IF Statements and Operators
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 17.11.2019

Bu yazıda, Bash ile script yazarken döngüleri nasıl kullanabileceğimizi ele alacağız. For, while ve until döngülerini karşılaştıracağız. […] 1 2 3 4 5 6 7 #!/bin/bash i=0 while [ i" ((i++)) done until 1 2 3 4 5 6 7 #!/bin/bash i=0 until [ i" ((i++)) done for for döngüsünün …

published on 16.11.2019

Eğer test etmek istediğimiz bir durum varsa if statement kullanırız. Birden fazla durum varsa nested if statement kullanabiliriz ama sayı arttıkça if statement karmaşıklaşacaktır. Burada devreye case giriyor. Syntax’ı basit.

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 …

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 …