Bash

使用 mysql 命令但變數失敗的 Bash 腳本

  • May 30, 2019

我有一個複製虛擬主機和關聯數據庫的腳本 - 但是其中一個 mysql 命令不起作用。它失敗並最終輸出 mysql 版本號和“如何使用”資訊,就好像它沒有被傳遞有效參數一樣 - 雖然沒有給出錯誤。

腳本的縮寫版本如下 - 它是應該創建新數據庫並授予失敗的權限的行。我會很感激任何關於我錯了什麼或如何追查問題的指導。

謝謝。

#!/bin/bash -e
clear
echo "MySQL Admin Password: "
read -s mysqlpass
echo "New Site name (short, a-zA-Z only)"
read -e newsitename
echo "Last chance - sure you want to run the script? (y/n)"
read -e run
if [ "$run" == y ] ; then

   # This command doesn't work
   dbsetup="CREATE DATABASE "$newsitename"_db;GRANT ALL PRIVILEGES ON "$newsitename"_db.* TO 'site_usr'@'localhost';FLUSH PRIVILEGES;"
   mysql -u root -p$mysqlpass -e "$dbsetup"

   mysqldump -u root -p$mysqlpass template_db > temp.sql

   dbimport=$newsitename"_db < temp.sql"
   mysql -u root -p$mysqlpass $dbimport

else
   exit
fi

你可以試試:

dbsetup="CREATE DATABASE ${newsitename}_db;GRANT ALL PRIVILEGES ON ${newsitename}_db.* TO 'site_usr'@'localhost';FLUSH PRIVILEGES;"

雙引號會損壞您的字元串。

這個在 shell 腳本中為我工作:

environment_id=10

mysql -u root -proot dbname -e "update environment SET deployment_status = 1 WHERE environment_id = '${environment_id}'";

引用自:https://unix.stackexchange.com/questions/279003