Bir değişkenin önündeki '#' operatörü değişken genişletmede ne yapar?


12

aşağıda terminalde yürüttüğüm kod

[root@idm ~]# x="$(date +%d%m%y)"    
[root@idm ~]# echo $x
270217
[root@idm ~]# echo ${#x}
6

Birisi çıktının neden olduğunu anlamama yardımcı olabilir 6mi? #Değişkene esasen ne yapıyor?

Yanıtlar:


28

Parametrenin uzunluğunu veya bir dizideki öğe sayısını veya konumsal parametre sayısını döndüren bir parametre genişletmesidir.

Lütfen kabuğunuzun kılavuzunu okuyun. Aşağıdaki bashkılavuzdan:

${#parameter}

Değerinin karakter parametercinsinden uzunluğu ikame edilir . Eğer parameterbir *ya da @değer, konumsal parametreler sayısıdır. Eğer parameterile indislenmiş bir dizi adım, *ya da @, ikame edilmiş bir değer dizideki elementlerin sayısı. Eğer parameternegatif bir sayı ile indislenmiş dizinlenmiş bir dizi adım bu sayı çok olumsuz endeksleri geri dizinin sonundaki sayısı ve -1 referanslar son eleman bir indeks, parametresinin maksimum dizininden bir büyük göre yorumlanır .


Ve ayrıca, lütfen interaktif bir kök kabuğunda çalışma alışkanlığı edinmeyin. En iyi ihtimalle tehlikeli ve pervasız. sudoAz miktarda ve yalnızca yüksek ayrıcalıklar gerektiren durumlarda kullanın . Birlikte oynamak bash, kesinlikle sıradan olmayan bir kullanıcı olarak yapabileceğiniz bir şeydir.

Son birkaç yıldır, kendim için tek bir kullanıcıyı manuel olarak eklemek için yalnızca etkileşimli bir kök kabuk kullandım. Bu 2 dakikalık bir iş ve o makinede bir daha asla bir #istem görmem gerekmiyor .


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.