我正在编写一个 bash 脚本来自动创建 MySQL 数据库。bash 脚本如下(请忽略那些变量 $db_name、$db_pwd...):
#!/bin/bash
sudo mysql -u root << EOF
CREATE DATABASE $db_name;
CREATE USER $db_user IDENTIFIED BY $db_pwd;
GRANT ALL PRIVILEGES ON $db_name.* TO $db_user;
quit
EOF
printf "Done"
Run Code Online (Sandbox Code Playgroud)
我希望数据库创建成功完成,然后运行打印命令。但我不能将 && 放在 EOF 之后,例如:
#!/bin/bash
sudo mysql -u root << EOF
CREATE DATABASE $db_name;
CREATE USER $db_user IDENTIFIED BY $db_pwd;
GRANT ALL PRIVILEGES ON $db_name.* TO $db_user;
quit
EOF &&
printf "Done"
Run Code Online (Sandbox Code Playgroud)
它会显示如下错误:
invalid command name "EOF"
while executing
"EOF &&"
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
一个简单的解决方法是如果 mysql 失败则退出。
sudo mysql -u root << EOF || exit
CREATE DATABASE $db_name;
CREATE USER $db_user IDENTIFIED BY $db_pwd;
GRANT ALL PRIVILEGES ON $db_name.* TO $db_user;
EOF
echo "Done"
Run Code Online (Sandbox Code Playgroud)
或者您可以添加set -e以使任何失败的命令立即退出脚本。
#!/bin/bash
set -e
sudo mysql -u root << EOF
CREATE DATABASE $db_name;
CREATE USER $db_user IDENTIFIED BY $db_pwd;
GRANT ALL PRIVILEGES ON $db_name.* TO $db_user;
EOF
echo "Done"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
279 次 |
| 最近记录: |