Shell脚本同时调用#!/bin/bash和#!/usr/bin/expect

如果你想在一个脚本中同时使用bash和expect,你可以将expect部分嵌入到bash脚本中。以下是一个示例:

复制代码
#!/bin/bash

# 设置MySQL服务器地址、端口、用户名和密码
MYSQL_HOST="localhost"
MYSQL_PORT="3306"
MYSQL_USER="your_username"
MYSQL_PASSWORD="your_password"

# 设置要执行的SQL命令
MYSQL_COMMAND="SHOW DATABASES;"

# 使用expect来自动化交互式的过程
expect << EOF
    # 使用spawn启动mysql命令行客户端
    spawn mysql -h $MYSQL_HOST -P $MYSQL_PORT -u $MYSQL_USER

    # expect会等待密码提示符出现,并自动输入密码
    expect "Enter password: "
    send "$MYSQL_PASSWORD\r"

    # 发送执行SQL命令的命令
    send "$MYSQL_COMMAND\r"

    # expect会等待结果返回,并将结果输出到屏幕
    expect "\r\n"

    # 将剩余的输出(如果有)发送到屏幕
    while {1} {
        expect {
            "\r\n" {
                send_user "\n"
                break
            }
            default {
                send_user "-"
                exp_continue
            }
        }
    }

    # 关闭spawned的进程
    expect eof
EOF

# 这里可以继续编写你的bash脚本内容
echo "Bash script continues here..."

在这个示例中,我们使用了bash来设置变量和调用expect。然后,我们使用<< EOF和EOF来定义一个here文档,其中包含了expect的命令。这样,bash脚本就可以在执行expect命令后继续执行其他bash命令。

注意:在实际应用中,你可能需要根据你的具体需求来调整这个脚本,例如处理expect命令的输出或者错误等。同时,也要注意在脚本中直接写入MySQL的用户名和密码可能会带来安全风险,建议使用更安全的方式来存储和传递这些敏感信息。

相关推荐
孙克旭_4 小时前
云原生基础之Containerd容器运行时
运维·云原生
分布式存储与RustFS4 小时前
RustFS 自建对象存储实战目录:110 篇按场景分类(持续更新)
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
无忧_wy4 小时前
MoneyPrinterTurbo 自动化视频生成实战指南
运维·人工智能·自动化·音视频
木头左15 小时前
【Nginx】内网服务源 IP 白名单实战:动态域名解析放行网段 + 端口接管零改造
运维·nginx·白名单·反向代理
禁默16 小时前
启元 Q1 二次开发实践:Ubuntu 部署与仿真验证,从 PrimeConsole 到 ROS 2 Humble + RViz
linux·运维·ubuntu
skywalk816316 小时前
把 去也网站 从 Ubuntu 搬到 FreeBSD:一次 Service Jail + nginx 的部署实录
linux·运维·nginx·ubuntu·freebsd
翔云12345617 小时前
RocksDB中,客户端每写入一次数据,需要访问几次磁盘
运维·数据库·mysql
爱莉希雅&&&18 小时前
GitLab 完整学习笔记
linux·运维·服务器
小杨爱科普19 小时前
制造业上自动化改造,改造部分的专利到底归谁
运维·经验分享·自动化
方便面不加香菜21 小时前
Docker Container --容器及容器的操作案例详解
运维·docker·容器