我在运行的bash脚本中有一个MySQL命令。我跑其它Linux命令行这一个(其实是一个连mysql命令)命令前,但是当它到达这一个,这是行不通的:Bash脚本没有运行MySQL命令
DEST_HOST="localhost"
DEST_DBNAME="db_name"
DEST_DBUSER="root"
DEST_DBPASS=""
# FILE NAME
MIGRATION_FILE="migration_database"
# Export/Import Commands
DO_DATABASE_UPDATE="mysql --host=$SOURCE_HOST --user=$DEST_DBUSER --password $DEST_DBNAME < $MIGRATION_FILE.sql"
echo 'Running local updates...'
$DO_DATABASE_UPDATE
echo "$DO_DATABASE_UPDATE"
# Done!
echo "Complete!"
我有migration_database.sql
文件中的我从中运行它的文件夹。正如你所看到的,我在所有内容的最后打印出UPDATE命令。会发生什么是我运行这个,它只是在mysql菜单上打印,就像我跑mysql -I
获得帮助菜单。
如果我复制并粘贴打印出来的命令并运行它,它效果很好。我不知道为什么bash不能在脚本中执行此操作。
任何想法?
我从运行它终端在我的Mac上,所以我猜这就是为什么它不提示我?这肯定会成为问题,我没有意识到是这样。我一定会尝试这个。我喜欢conf文件解决方案。当我回到我的电脑时,我会让你知道我找到了什么。感谢您及时的回复! – MillerMedia
我一直在玩这个,它不想运行更新脚本。它会运行到'<'字符,但不起作用。如果我将它从变量声明中分离出来,或者如果我在'<'处停止变量声明并像'$ DO_DATABASE_UPDATE <$ MIGRATION_FILE.sql'那样执行它,它就会起作用。在bash变量的命令中使用小于号的符号有没有问题? – MillerMedia