• 将Excel中的数据导入shell脚本,并调用expect脚本


    主脚本test.sh

    #!/bin/bash
    # 设置超时时间
    set timeout 240
    # 将 Excel 文件转换为 CSV 格式
    # test.xlsx > temp.csv
    # 初始化一个二维数组
    declare -A data
    # 逐行读取 CSV 文件,并将每个单元格的数据存储在二维数组中
    row=1
    while IFS=, read -r col1 col2 col3 col4 col5 col6 col7; do
        data[$row,1]=$col1
        data[$row,2]=$col2
        data[$row,3]=$col3
        data[$row,4]=$col4
        data[$row,5]=$col5
    	data[$row,6]=$col6
    	data[$row,7]=$col7
        ((row++))
    done < test.csv
    echo $row
    # 打印二维数组的内容(仅作示例,您可以根据需要进行其他操作)
    index=2
    echo $index
    num=$row-1
    echo $num
    while(($index<=$num))
    do
        echo "Row $index: ${data[$index,1]}, ${data[$index,2]}, ${data[$index,3]}, ${data[$index,4]}, ${data[$index,5]}, ${data[$index,6]}, ${data[$index,7]}"
    	# 运行希望自动化的脚本并等待特定提示
        expect child.sh ${data[$index,1]} ${data[$index,2]} ${data[$index,3]} ${data[$index,4]} ${data[$index,5]} ${data[$index,6]} ${data[$index,7]}
    	((index++))
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    子脚本

    #!/usr/bin/expect -f
    #!/bin/bash
    # 输出参数的数量
    puts "Number of arguments: $argc"
    
    # 输出所有的参数
    puts "Arguments: $argv"
    
    # 输出单独的参数
    puts "First argument: [lindex $argv 0]"
    puts "Second argument: [lindex $argv 1]"
    puts "Third argument: [lindex $argv 2]"
    set myhost [lindex $argv 1]
    set myport [lindex $argv 2]
    set myuser [lindex $argv 3]
    set mypassword [lindex $argv 4]
    set myproname [lindex $argv 5]
    spawn ./ProjectCreator.out
    expect {
    "Please choose the database type(请输入数据库类型0-PostgreSQL/1-MySQL):" { send "[lindex $argv 0]\r"; exp_continue}
    "Please input IP of the database(请输入数据库IP):" { send "[lindex $argv 1]\r"; exp_continue}
    "Please input port of the database(请输入数据库端口):" { send "[lindex $argv 2]\r"; exp_continue }
    "Please input username of the database(请输入数据库用户名):" { send "[lindex $argv 3]\r"; exp_continue}
    "Please input the password of the database(请输入数据库密码):" { send "[lindex $argv 4]\r"; exp_continue}
    "Please input the project name(请输入项目名称):" { send "[lindex $argv 5]\r"; exp_continue}
    "Please choose the project language(请选择语言类型0-中文/1-English):" { send "[lindex $argv 6]\r"; exp_continue}}
    #继续留在命令行执行过程
    interact
    sleep 180
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
  • 相关阅读:
    RocketMQ源码(13)—Broker 消息重放服务ReputMessageService源码解析
    HCIP-AI语音处理理论、应用
    C语言-流程控制
    2022年全球市场光储充一体化总体规模、主要企业、主要地区、产品和应用细分研究报告
    【C++】单例模式
    【C语言】预处理超级详细解析
    ENVI:如何进行遥感图像的分类?(支持向量机模型)
    2023年CSP-J真题详解+分析数据(题目篇)
    《动手学深度学习 Pytorch版》 10.1 注意力提示
    【算法|动态规划No.12】leetcode152. 乘积最大子数组
  • 原文地址:https://blog.csdn.net/qq_43496409/article/details/134519213