Jawaban:
Menggunakan ${ }
untuk melampirkan variabel.
Tanpa kurung keriting:
VAR="foo"
echo $VAR
echo $VARbar
akan memberi
foo
dan tidak ada, karena variabel $VARbar
tidak ada.
Dengan kurung keriting:
VAR="foo"
echo ${VAR}
echo ${VAR}bar
akan memberi
foo
foobar
Tutup dulu $VAR
tidak perlu, tetapi praktik yang baik.
Sebagai contoh Anda:
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword ${WEBSITE} > ${WEBSITE}.sql
Ini bekerja untuk bash
, zsh
, ksh
, mungkin orang lain juga.
${ }
tidak terjadi penggabungan. Misalnya, ELP=elp && echo $ELP && man --h${EPL}
tidak berfungsi.
Hanya menyatukan isi variabel ke apa pun yang ingin Anda gabungkan, misalnya
/usr/bin/mysqldump --opt -u root --ppassword "$WEBSITE" > "$WEBSITE.sql"
Kutipan ganda tidak terkait dengan penggabungan: di sini >$WEBSITE.sql
akan bekerja juga. Mereka diperlukan sekitar ekspansi variabel ketika nilai variabel mungkin berisi beberapa karakter khusus shell (spasi dan \[?*
). Saya sangat merekomendasikan menempatkan tanda kutip ganda di semua ekspansi variabel dan penggantian perintah, yaitu selalu menulis "$WEBSITE"
dan"$(mycommand)"
.
Untuk detail lebih lanjut, lihat $ VAR vs $ {VAR} dan untuk mengutip atau tidak mengutip .
Saya biasanya menggunakan tanda kutip, misalnya echo "$WEBSITE.sql"
.
Jadi Anda bisa menulis seperti:
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > "$WEBSITE.sql"
.
bukan karakter yang valid dalam nama variabel; lihat jawaban wag jika Anda ingin menyatukan string yang dimulai dengan karakter yang valid (mis. "$ WEBSITEsql" tidak akan berfungsi)