İçerisinde değişken olan bir dizeyi genişletmeden / değerlendirmeden yankılama [kapalı]


12

Her yerde aradım. Denenmiş yankı ve baskı. Denenmiş tek ve çift tırnak. Ama verileri ayrıştırdım ve bir değişkene atadım ve daha sonra içinde bir değişken varsa onu değerlendirmek istiyorum. Sonra değişkeni bir joker karakterle değiştireceğim ve dosyayı arayacağım.

Misal:

var="file.$DATE.txt"

### Where it goes wrong-  Needs to identify that $DATE is within the $var varaible.
test=$(echo "$var"|grep '\$')
if [[ $test ]]
then
    ### I would use whatever fix is discovered here as well
    test=$(echo $test|sed 's/\$[a-zA-Z]*/\*/')
fi

### (Actually pulling from remote machine to local)
cat $test > /tmp/temporary.file

İşte birçok başarısızlığımdan en az biri:

PROMPT> file=blah.$DATE
PROMPT> test=$(echo "$file"|grep '\$')
PROMPT> echo $test
PROMPT>
PROMPT>

Genişleme ile ilgili bir şey olduğunu biliyorum, ama nasıl çalışacağına dair hiçbir fikrim yok. Herhangi bir yardım mutluluk duyacağız. Teşekkürler!


Çözmeniz gereken nedir? Bu var genişlemesiz içeriyor $datemu? Bu kullanım için: var='file.$DATE.txt'. Var kullanıldığında tarihi genişletmek için? Eminim sorduğunuz şeyi açıklamanız gerekir.

Maalesef, "var" değişkeni içinde bir değişkenin tanımlanıp tanımlanmadığını test etmek için. İç içe geçmiş.
krmarshall87

Değişken gibi görünen herhangi bir şeyi (önce ihtiyacım olan umursamadan) hemen kaldırarak ve bir joker karakterle değiştirerek ikilemim etrafında bir yol buldum:sed 's/\${*[a-zA-Z0-9_%]*}*/\*/'
krmarshall87

Yanıtlar:


21

$dateDeğişken içinde ihtiyacınız varsa :

var='file.$date.txt'

Bu, $ değişkeninin içinde kalır:

$ echo "$var" | grep '\$'
file.$date.txt

8

Kabuk genişlemesini önlemek için değişkenlerin etrafında tek tırnak kullanın. Örnek echo '$file'genişlemeyecek $file.

Aşağıdaki yorumdan sonra düzenle:

Değişkeniyle $int işaretinden kaçabilirsiniz .varvar="file.\$DATE.txt"


Genişletmeye ihtiyacım var, ama sadece bir seviye. Adım adım istenen sonucu eklemeyi unuttum. Ancak $ dosyasının içeriğinin dolar işareti ($ DATE) için değerlendirilmesini istiyorum.
krmarshall87

Bunu çözmek için düzenlendi.
Munir

Bu verileri bir dış kaynaktan alıyorum. $ Bir \ $ ile bile olsa, bir yankı gerektirir bence. ANCAK, ayrıştırırken sıkıştırabilir miyim
bakalım
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.