コマンドラインでシェル変数を他のパラメータにどのように関連付けることができますか?

コマンドラインでシェル変数を他のパラメータにどのように関連付けることができますか?

コマンドラインでシェル変数を他のパラメータにどのように関連付けることができますか?

例えば、

#!/bin/sh
WEBSITE="danydiop" 
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > $WEBSITE.sql

.sqlに接続する必要があります。$WEBSITE

答え1

変数をカプセル化するために使用されます${ }

中かっこがない場合:

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、、および他のユーザーにも適用されますzshksh

答え2

変数の内容をリンクしたい他の項目にリンクするだけです。

/usr/bin/mysqldump --opt -u root --ppassword "$WEBSITE" > "$WEBSITE.sql"

二重引用符は接続とは関係ありません。>$WEBSITE.sqlここでも二重引用符が機能します。変数の値にいくつかのシェル特殊文字(スペースや)を含めることができる場合は、\[?*変数を拡張するときに必要です。すべての変数の拡張とコマンドの置換には二重引用符を使用することをお勧めします。つまり、常に"$WEBSITE"andを書いてください"$(mycommand)"

詳細については、次を参照してください。$VAR対${VAR}と引用

答え3

私は通常引用符を使用します(例:)echo "$WEBSITE.sql"

したがって、次のように書くことができます。

#!/bin/sh
WEBSITE="danydiop" 
/usr/bin/mysqldump --opt -u root --ppassword $WEBSITE > "$WEBSITE.sql"

関連情報