回答:
${ }
変数を囲むために使用します。
中括弧なし:
VAR="foo"
echo $VAR
echo $VARbar
与えるだろう
foo
何もあり$VARbar
ません。変数が存在しないためです。
中括弧付き:
VAR="foo"
echo ${VAR}
echo ${VAR}bar
与えるだろう
foo
foobar
最初のものを囲む$VAR
必要はありませんが、良い習慣です。
あなたの例:
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword ${WEBSITE} > ${WEBSITE}.sql
これはのために働くbash
、zsh
、ksh
あまりにも、多分他の人を。
${ }
いかなる意味でも連結ではないことに注意してください。たとえば、ELP=elp && echo $ELP && man --h${EPL}
機能しません。
変数の内容を連結したいものに連結するだけです。例えば
/usr/bin/mysqldump --opt -u root --ppassword "$WEBSITE" > "$WEBSITE.sql"
二重引用符は連結とは無関係>$WEBSITE.sql
です。ここでも機能します。変数の値にシェルの特殊文字(空白および\[?*
)が含まれる可能性がある場合、変数の展開に必要です。すべての変数展開とコマンド置換を二重引用符で囲むことを強くお勧めします。つまり、常に"$WEBSITE"
andを記述し"$(mycommand)"
ます。
詳細については、「$ VAR vs $ {VAR}」を参照してください。
通常、引用符を使用しますecho "$WEBSITE.sql"
。
次のように書くことができます:
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > "$WEBSITE.sql"
.
変数名の有効な文字ではないため、これは機能します。有効な文字で始まる文字列を連結する場合は、wagの答えを参照してください(たとえば、 "$ WEBSITEsql"は機能しません)