我按照你修改后的shell脚本:grep "李金hao" cloud-init.sh && echo "chenggong" || (echo "GG"; exit 0) ,执行后依然没有退出
时间: 2023-08-05 09:03:11 浏览: 147
非常抱歉,我之前的回答有误。在你提供的脚本中,`exit 0` 是在子shell中执行的,因此它只会退出子shell,而不是整个脚本。
要使整个脚本在 `echo "GG"` 后退出,你需要使用 `exit` 命令在主shell中执行。以下是修改后的示例:
```bash
grep "李金hao" cloud-init.sh && echo "chenggong" || (echo "GG"; exit)
```
现在,如果 `grep` 命令失败,则会执行 `echo "GG"`,然后使用 `exit` 命令退出整个脚本。这样整个脚本会立即退出。
相关问题
grep "李金hao" cloud-init.sh && echo "chenggong" || (echo "GG" && exit 0) 在这个shell脚本中,为什么执行完echo "GG"后脚本没有执行exit 0退出呢?
在这个shell脚本中,`grep "李金hao" cloud-init.sh` 命令会在 `cloud-init.sh` 文件中搜索包含`李金hao`的文本。如果找到匹配的文本,则该命令返回零状态码(成功),否则返回非零状态码(失败)。
根据你提供的脚本,如果 `grep` 命令执行成功(返回零状态码),则会执行 `echo "chenggong"`,否则会执行 `(echo "GG" && exit 0)`。
如果 `echo "GG"` 命令执行成功(返回零状态码),那么 `(echo "GG" && exit 0)` 这个子shell 的退出状态将不会影响到外层的脚本。即使子shell中的 `exit 0` 成功执行,外层的脚本仍然会继续执行。
如果你想要在执行 `echo "GG"` 后立即退出整个脚本,你可以将整个命令放在一个子shell 中,并使用 `exit` 命令退出整个子shell。以下是修改后的示例:
```bash
grep "李金hao" cloud-init.sh && echo "chenggong" || (echo "GG"; exit 0)
```
这样,如果 `grep` 命令失败,则会执行 `echo "GG"`,并通过 `exit 0` 命令退出整个子shell,从而使整个脚本退出。
#!/usr/bin/env bash echo "此脚本用于yum 安装mysql" if [[ $UID -ne 0 ]];then echo "使用root 执行此脚本" exit 1 fi if [[ $# != 1 ]];then echo "Usage script (5.5|5.6|5.7|8.0)" exit 123 fi echo "清理环境" systemctl stop mysqld mariadb &>/dev/null yum erase -y `rpm -qa |grep mariadb` 2>/dev/null yum erase -y `rpm -qa |grep mysql` 2>/dev/null rm -rvf /etc/my.cnf /var/lib/mysql /var/log/mysql* userdel -rf mysql &>/dev/null ping -w3 www.baidu.com &>/dev/null if [[ $? -eq 0 ]];then yum install -y wget yum-utils &>/dev/null if [[ $? -ne 0 ]];then echo "yum 配置错误" exit 110 fi yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm yum clean all yum makecache fast else echo "网络错误" exit 22 fi case $1 in 5.5) yum-config-manager --disable mysql80-community yum-config-manager --enable mysql55-community ;; 5.6) yum-config-manager --disable mysql80-community yum-config-manager --enable mysql56-community ;; 5.7) yum-config-manager --disable mysql80-community yum-config-manager --enable mysql57-community ;; 8.0) : ;; *) yum repolist all |grep mysql echo "其他版本可自行选择下载并配置" exit 13 ;; esac sleep 2 yum -y install mysql-community-server systemctl start mysqld echo "启动成功,初始密码如下(mysql5.7前版本没有初始密码)" grep -o 'root@localhost.*' /var/log/mysqld.log echo "安装完成" 优化以上这段脚本
这段脚本是用于在 Linux 系统上使用 yum 安装 MySQL 数据库的。脚本首先清理环境,停止已经运行的 MySQL 或 MariaDB 服务,并删除相关的文件和用户。然后通过检测网络连接状态,安装必要的工具和 MySQL 的 yum 源。根据用户指定的版本号,选择对应的 yum 源,并使用 yum 安装 MySQL。最后启动 MySQL 服务,并输出初始密码。这个脚本执行前需要以 root 用户身份执行,并且需要传递 MySQL 版本号作为参数。
阅读全文