MySQLコマンドをbash(Ubuntu)で作成しました:
[XXXX:~]$ mysql -h localhost -u XXXX -pXXXX -e "DROP DATABASE IF EXISTS `f-XXXX`;"
このコマンドでバッククォートが必要です。データベース名が可変であるためです。
そのコマンドは機能せず、送信されf-XXXX command not found
ます。私の問題はバッククォートに関連していると思います。どのようにできるのか?
ここでは、変数の置換にバッククォートを使用する必要はありません。
[XXXX:~]$ mysql -h localhost -u XXXX -pXXXX -e "DROP DATABASE IF EXISTS ${DB};""
Bashはバックティックの内容を取得し、それをコマンドとして使用して別のbashプロセスを実行します。
これはバッククォートです。バッククォートは引用符ではなく、非常に特別な意味があります。バックティックの間に入力するものはすべて、メインコマンドの前にシェルによって評価(実行)され(例のchownのように)、その実行の出力は、その場所でその出力を入力するのと同じように、そのコマンドによって使用されます。コマンドライン。
代わりに$(コマンド)を使用してください。
mysql -h localhost -u XXXX -pXXXX -e "DROP DATABASE IF EXISTS $('f-XXXX');"