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。然后,我们使用<< EOFEOF来定义一个here文档,其中包含了expect的命令。这样,bash脚本就可以在执行expect命令后继续执行其他bash命令。

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

相关推荐
嵌入式×边缘AI:打怪升级日志几秒前
Linux 驱动开发核心自测题库(面试官问答版)
linux·运维·驱动开发
AIGC设计所7 分钟前
网络安全8大就业领域和待遇对比!
运维·开发语言·网络·安全·web安全·php
网安薯条27 分钟前
Kali Linux 虚拟机安装与基础配置保姆级图文教程
linux·运维·网络·安全·web安全·网络安全
良木生香30 分钟前
【Linux系统编程】Linux基础指令(1)---一文带你了解Linux的基础指令
linux·运维·服务器·ubuntu·机器学习·系统架构·centos
Cx330❀32 分钟前
深度解析:从原理到实战,一文吃透 Linux 信号机制(上)
大数据·linux·运维·服务器·人工智能·elasticsearch
hj28625140 分钟前
Linux基础知识day06
linux·运维·服务器
Shadow(⊙o⊙)1 小时前
linux基础指令2.0
linux·运维·服务器·学习·apache
嵌入式×边缘AI:打怪升级日志1 小时前
嵌入式 Linux V4L2 摄像头采集编程(五):MMAP + 亮度实时控制(附完整代码与面试题)
linux·运维·服务器
2301_789015622 小时前
Linux基础指令(一)
linux·运维·服务器·c语言·开发语言·c++·linux指令
晚风予卿云月2 小时前
【linux】进程优先级
linux·运维·服务器