Yanıtlar:
${ }Bir değişkeni kapatmak için kullanın .
Kıvırcık parantez olmadan:
VAR="foo"
echo $VAR
echo $VARbar
verirdi
foo
ve hiçbir şey, çünkü değişken $VARbarmevcut değil.
Kıvırcık parantez ile:
VAR="foo"
echo ${VAR}
echo ${VAR}bar
verirdi
foo
foobar
Birincisini kuşatmak $VARgerekli değildir, ancak iyi bir uygulamadır.
Örneğiniz için:
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword ${WEBSITE} > ${WEBSITE}.sql
Bu çalışmalar bash, zsh, kshbelki diğerleri de.
${ }hiçbir anlamda birleştirme olmadığına dikkat edin . Örneğin, ELP=elp && echo $ELP && man --h${EPL}çalışmıyor.
Değişken içeriğini birleştirmek istediğiniz başka bir şeyle birleştirin, ör.
/usr/bin/mysqldump --opt -u root --ppassword "$WEBSITE" > "$WEBSITE.sql"
Çift tırnak işaretleri birleştirme ile ilgisiz: burada >$WEBSITE.sql da işe yarardı. Değişkenin değeri bazı özel kabuk karakterleri (boşluk ve \[?*) içerebiliyorsa değişken genişletmeler etrafında bunlara ihtiyaç duyulur . Tüm değişken genişletmelerin ve komut ikamelerinin etrafına çift tırnak koymanızı şiddetle öneririm, yani her zaman yaz "$WEBSITE"ve "$(mycommand)".
Daha fazla ayrıntı için bkz. $ VAR vs $ {VAR} ve teklif vermek veya teklif etmemek .
Genellikle tırnak işareti kullanırım, ör. echo "$WEBSITE.sql" .
Yani şöyle yazabilirsiniz:
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > "$WEBSITE.sql"
.Değişken adında geçerli bir karakter olmadığından bu işe yarar ; bkz Wag cevabını siz geçerli karakterlerle başlıyor bir dize bitiştirmek istiyorsanız (örneğin "$ WEBSITEsql" olmaz iş)