コマンドラインでシェル変数を他のパラメーターに連結するにはどうすればよいですか?
例えば、
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > $WEBSITE.sql
連結する必要があります.sql
から$WEBSITE
${ }
を使用して変数を囲みます。
中括弧なし:
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
で機能します。
変数の内容を他の連結したいものに連結するだけです。
_/usr/bin/mysqldump --opt -u root --ppassword "$WEBSITE" > "$WEBSITE.sql"
_
二重引用符は連結とは無関係です。ここで_>$WEBSITE.sql
_も機能します。変数の値にシェルの特殊文字(空白文字と_\[?*
_)が含まれている可能性がある場合、変数の展開の前後で必要です。すべての変数展開とコマンド置換を二重引用符で囲むことを強くお勧めします。つまり、常に_"$WEBSITE"
_および"$(mycommand)"
と記述します。
詳細については、「 $ VARと$ {VAR}、および引用するかしないか 」を参照してください。
私は通常、引用符を使用します。 echo "$WEBSITE.sql"
。
だからあなたはそれを次のように書くことができます:
#!/bin/sh
WEBSITE="danydiop"
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > "$WEBSITE.sql"