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 $VARbar
mevcut değil.
Kıvırcık parantez ile:
VAR="foo"
echo ${VAR}
echo ${VAR}bar
verirdi
foo
foobar
Birincisini kuşatmak $VAR
gerekli 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
, ksh
belki 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ş)