Bash içinde ünlem işareti bulunan değişken ikame


46

Benim .cfg bash betiği dosyamda aşağıdaki satırları var

DDF_SOURCE="siebel_DATA_DATE_FORMAT"
DATA_DATE_FORMAT=${!DDF_SOURCE}

${!DDF_SOURCE} nasıl değerlendirilir? Bu olurdu !siebel_DATA_DATE_FORMATbana mantıklı gelmiyor ki.

Yanıtlar:


65

Bu, GENİŞLETME , alt bölüm Parametre Genişletme bölümünde belgelenen dolaylı bir genişlemedir :man bash

Parametrenin ilk karakteri bir ünlem işareti ise (!), Değişken dolaylı bir seviyeye getirilir. Bash, parametrenin geri kalanından oluşan değişkenin değerini değişkenin adı olarak kullanır; bu değişken daha sonra genişletilir ve bu değer, değişimin geri kalanında, parametrenin kendisinin değeri yerine kullanılır. Bu dolaylı genişleme olarak bilinir.

bash-4.2$ DDF_SOURCE="siebel_DATA_DATE_FORMAT"

bash-4.2$ siebel_DATA_DATE_FORMAT='Hello Indirect Redirection'

bash-4.2$ DATA_DATE_FORMAT=${!DDF_SOURCE} # siebel_DATA_DATE_FORMAT must get value before this line

bash-4.2$ echo $DATA_DATE_FORMAT
Hello Indirect Redirection
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.