gıdım bile / bölme
Önce glob / split'i alacağım. @ Stephane'nin bağlandığınız yanıtı bu terimleri genel anlamda kullanmaktır. Bunlar gerçek komutlar ya da bunun gibi bir şey değildir, sadece sahte işlemlerdir.
split("$test")
Elementlerin bir "dizisine" içine "$ test" yukarı içeriğini bölmek olacaktır.
Daha glob(...)
sonra, *
veya aralıklar gibi kabuk globbing karakterleri içeren bu öğelerin herhangi birini genişletmeye özen gösterir [1-2]
.
Misal
Dize diyelim ki $test
aşağıdaki gibidir.
$ test="afile[1-2] afile[3-5]"
Ayrıca içinde bazı dosyalar bulunan bir dizinimiz olduğunu varsayalım.
$ ls -1
afile1
afile2
afile3
afile4
afile5
Şimdi tırnak işaretleri olmadan yankılanmaya çalışırsak, dizimizin boşluklara bölündüğünü ve daha sonra globbing karakterlerinin genişlediğini fark etmelisiniz.
$ echo $test
afile1 afile2 afile3 afile4 afile5
Ancak, değişkeni bir argüman olarak ilettiğimizde değişkeni alıntılarsak echo
, orijinal değişmez dizgeyi alırdık.
$ echo "$test"
afile[1-2] afile[3-5]
değişken genişleme
Değişken genişleme terimi, kabuğun temel işlemlerinin bir parçası olarak gerçekleştirdiği temel işlemi kapsamaktadır. Kabuk girdiyi ayrıştırmaktan ve sözdizimsel olarak doğru kabul edildikten sonra bu girdiyi yürütmekten sorumludur.
Önceki örneğimizde. Değişken alıntılanmamış $test
olarak sunulduğunda echo
, kabuğa devam etmesini ve bu argümanları bölmesini ve sonra onları yutmasını söylüyorduk.
Alıntı yapıldığında, aslında çift tırnak ile sarılmış olan değişken (ler) ile bu özelliği devre dışı bırakıyorduk.
Misal
İşte bazı globbing ve yarma örnekleri.
glob / bölme otomatik olarak gerçekleşir
$ echo file{1..3}
file1 file2 file3
$ echo file{1..3} dir{a..b}
file1 file2 file3 dira dirb
$ echo dir{z..w} file{A..D}
dirz diry dirx dirw fileA fileB fileC fileD
$ echo dir{z..w} file{A..B} fileC
dirz diry dirx dirw fileA fileB fileC
glob / split çift tırnak ile devre dışı bırakıldı
$ echo "dir{z..w} file{A..B} fileC"
dir{z..w} file{A..B} fileC
$ echo "dir{z..w} file{A..B}"
dir{z..w} file{A..B}