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

news/2024/7/9 21:18:02 标签: excel, postgresql, 数据库

主脚本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

子脚本

#!/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


http://www.niftyadmin.cn/n/5202235.html

相关文章

【数据结构】HashMap 和 HashSet

目录 1.哈希表概念 2冲突 2.1概念 2.2 冲突-避免 2.3冲突-避免-哈希函数设计 2.4 冲突-避免-负载因子调节 ​编辑 2.5 冲突-解决-开散列/哈希桶 2.5冲突严重时的解决办法 3.实现 4.性能分析 5.与Java集合类的关系 1.哈希表概念 在顺序结构中&#xff0c;元素关键码和存…

Hfish安全蜜罐部署

一、Hfish蜜罐介绍 HFish蜜罐官网 HFish是一款社区型免费蜜罐&#xff0c;侧重企业安全场景&#xff0c;从内网失陷检测、外网威胁感知、威胁情报生产三个场景出发&#xff0c;为用户提供可独立操作且实用的功能&#xff0c;通过安全、敏捷、可靠的中低交互蜜罐增加用户在失陷…

PLC通过Modbus转profinet网关读取并控制恒压供水系统中的变频器频率

PLC通过Modbus转profinet网关读取并控制恒压供水系统中的变频器频率 PLC通过Modbus转Profinet网关(XD-MDPN100)在恒压供水系统中读取变频器的频率。该系统实时监控逆变器的频率&#xff0c;以确保水的供应能够保持恒定的压力。PLC通过Modbus与变频器通信&#xff0c;将读取的频…

PDF文件无密码,如何解密?

PDF文件有两种密码&#xff0c;一个打开密码、一个限制编辑密码&#xff0c;因为PDF文件设置了密码&#xff0c;那么打开、编辑PDF文件就会受到限制。想要解密&#xff0c;我们需要输入正确的密码&#xff0c;但是有时候我们可能会出现忘记密码的情况&#xff0c;或者网上下载P…

华为云数据库 RDS 下载全量备份文件 wget

地址下载 wget -O FILE_NAME --no-check-certificate "DOWNLOAD_URL"FILE_NAME&#xff1a;重命名&#xff0c;例如mysql1121.qpDOWNLOAD_URL: 地址下载 参考 华为云数据库 RDS 下载全量备份文件

手机上玩.NET的两种方式

少见&#xff01;手机上玩 .NET_哔哩哔哩_bilibili 小米平板敲代码&#xff0c;termux安装dotnet和vscode_哔哩哔哩_bilibili 都是先容器加载linux rootfs&#xff0c;然后安装 linux-arm64 版本的 dotnet 命令行方式运行 dotnet&#xff0c;代码编辑到是可以安装使用 vscode…

目标分割技术-语义分割总览

前言 博主现任高级人工智能工程师&#xff0c;曾发表多篇SCI且获得过多次国际竞赛奖项&#xff0c;理解各类模型原理以及每种模型的建模流程和各类题目分析方法。目的就是为了让零基础快速使用各类代码模型&#xff0c;每一篇文章都包含实战项目以及可运行代码。欢迎大家订阅一…