コマンドラインでシェル変数を他のパラメータにどのように関連付けることができますか?
例えば、
#!/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
、、および他のユーザーにも適用されますzsh
。ksh
答え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"