gpt4 book ai didi

bash - 如何在 bash 中的 heredoc 之后使用控制运算符

转载 作者:行者123 更新时间:2023-11-29 09:41:54 25 4
gpt4 key购买 nike

我正在编写一个 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"

我希望数据库创建成功完成,然后打印命令运行。但是我不能把 && 放在 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"

它会显示如下错误:

invalid command name "EOF"
while executing
"EOF &&"

我该怎么做?

最佳答案

一个简单的解决方法是在 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"

或者您可以添加 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"

关于bash - 如何在 bash 中的 heredoc 之后使用控制运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56394319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com