当前位置: 首页 > news >正文

将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; dodata[$row,1]=$col1data[$row,2]=$col2data[$row,3]=$col3data[$row,4]=$col4data[$row,5]=$col5data[$row,6]=$col6data[$row,7]=$col7((row++))
done < test.csv
echo $row
# 打印二维数组的内容(仅作示例,您可以根据需要进行其他操作)
index=2
echo $index
num=$row-1
echo $num
while(($index<=$num))
doecho "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

相关文章:

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

主脚本test.sh #!/bin/bash # 设置超时时间 set timeout 240 # 将 Excel 文件转换为 CSV 格式 # test.xlsx > temp.csv # 初始化一个二维数组 declare -A data # 逐行读取 CSV 文件&#xff0c;并将每个单元格的数据存储在二维数组中 row1 while IFS, read -r col1 col2 co…...

elementui el-table用span-method方法对相同的列名或行名进行合并

看到的一篇文章 同理 如果对第二列进行合并的话copy一下第一个方法&#xff0c;让值赋给第二个数组就可以 // 合并方法mergeCells({ row, column , rowIndex, columnIndex }) {debugger;if (columnIndex 1) {const _row this.spanArr[rowIndex];const _col _row > 0 ? …...

汇编语言实现音乐播放器

目标程序 用汇编语言实现一个音乐播放器&#xff0c;并支持点歌 Overview 乐曲是按照一定的高低、长短和强弱关系组成的音调&#xff0c;在一首乐曲中&#xff0c;每个音符的音高和音长与频率和节拍有关&#xff0c;因此我们要分别为3首要演奏的乐曲定义一个频率表和一个节拍…...

大型网站系统架构演化(Web)

大型网站系统架构演化 大型网站系统架构演化需要关注的维度涉及的技术演进过程单体架构垂直架构使用缓存改善网站性能缓存与数据库的数据一致性问题缓存技术对比Redis分布式存储方案Redis集群切片的常见方式Redis数据类型Redis 淘汰算法使用服务集群改善网站并发能力 大型网站系…...

三轴加速度计LIS2DW12开发(2)----基于中断信号获取加速度数据

三轴加速度计LIS2DW12开发.2--轮基于中断信号获取加速度数据 概述视频教学样品申请生成STM32CUBEMX串口配置IIC配置CS和SA0设置INT1设置串口重定向参考程序初始换管脚获取ID复位操作BDU设置开启INT1中断设置传感器的量程配置过滤器链配置电源模式设置输出数据速率中断判断加速…...

Shell循环:whileuntil

一、特点&#xff1a;循环次数[一定]是固定的 二、while语句结构 while 条件测试 do 循环体 done 当条件测试成立&#xff08;条件测试为真&#xff09;&#xff0c;执行循环体 演示&#xff1a; 需求&#xff1a;每秒显示一个数字&#xff0c;一…...

Redis 安装部署

文章目录 1、前言2、安装部署2.1、单机模式2.1.1、通过 yum 安装&#xff08;不推荐&#xff0c;版本老旧&#xff09;2.1.1、通过源码编译安装&#xff08;推荐&#xff09; 2.2、主从模式2.3、哨兵模式2.4、集群模式2.5、其他命令2.6、其他操作系统 3、使用3.1、Java 代码 —…...

项目中遇到的半导体公司

作为一个技术人&#xff0c;我并不是亲美&#xff0c;从技术的实事求是角度讲&#xff0c;不得不感叹欧美的半导体技术。他们的datasheet能学到的东西太多太多&#xff1b;我甚至佩服他们缜密的逻辑。从他们的文章中领悟我们技术到底有多low&#xff0c;没办法一个一个了解所有…...

汇编:call与ret/retf指令

一、call指令 ​​​​​​​ 1.1 依据位移进行转移&#xff1a;call 标号 1.2 实现段间转移&#xff1a;call far ptr 标号 1.3 转移地址在寄存器中&#xff1a;call 16位寄存器 1.4 转移地址在内存中 1.4.1 call word ptr 内存单元地址 1.4.2 call dword ptr 内存单元地址…...

Fiddler抓包工具之高级工具栏中的重定向AutoResponder的用法

重定向AutoResponder的用法 关于Fiddler的AutoResponder重定向功能&#xff0c;主要是时进行会话的拦截&#xff0c;然后替换原始资源的功能。 它与手动修该reponse是一样的&#xff0c;只是更加方便了&#xff0c;可以创建相应的rules&#xff0c;适合批处理的重定向功能。 …...

如何基于OpenCV和Sklearn库开展数据降维

大家在做数据分析或者机器学习应用过程中&#xff0c;不可避免的需要对数据进行降维操作&#xff0c;好多垂直行业业务中经常出现数据量少但维度巨大的情况。数据降维的目的是为了剔除不相关或冗余特征&#xff0c;使得数据易用&#xff0c;去除无用数据&#xff0c;实现数据可…...

详解SpringAop开发过程中的坑

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…...

【海思SS528 | VDEC】MPP媒体处理软件V5.0 | VDEC的使用总结

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…...

Kubernetes sample-controller 例子介绍

sample-controller sample-controller 是 K8s 官方自定义 CDR 及控制器是实现的例子 通过使用这个自定义 CDR 控制器及阅读它的代码&#xff0c;基本可以了解如何制作一个 CDR 控制器 CDR 运作原理 网上有更好的文章&#xff0c;说明其运作原理&#xff1a; https://www.z…...

【C/C++指针】指针*与引用的区别

指针变量的值是所指对象的地址&#xff08;准确说是首地址&#xff0c;其类型定义其所指对象的字节长度&#xff09;引用变量的值是所引用对象本身的值 1 初始化 指针变量 可不初始化 且 可以更换指向对象 int *p;//此时是个野指针&#xff0c;该指针变量的值是任意值&#x…...

【ArcGIS Pro微课1000例】0039:制作全球任意经纬网的两种方式

本文讲解在ArcGIS Pro中制作全球任意经纬网的两种方式。 文章目录 一、生成全球经纬网矢量1. 新建地图加载数据2. 创建经纬网矢量数据二、布局生成经纬网1. 新建布局2. 创建地图框2. 创建经纬网一、生成全球经纬网矢量 以1:100万比例尺地图分幅为例,创建经差6、维差4的经纬网…...

【二叉树】练习题终章

二叉树的销毁 void BTreeDestroy(BTNode* root) {if (root NULL)return;BTreeDestroy(root->left);BTreeDestroy(root->right);free(root); }递归展示图 使用后序销毁&#xff0c;如果用前序销毁的话&#xff0c;就会找不到根对应的子树的地址.下面就不能被销毁了&…...

flutter开发实战-实现获取视频的缩略图封面video_thumbnail

flutter开发实战-实现获取视频的缩略图封面video_thumbnail 在很多时候&#xff0c;我们查看视频的时候&#xff0c;视频没有播放时候&#xff0c;会显示一张封面&#xff0c;可能封面没有配置图片&#xff0c;这时候就需要通过获取视频的缩略图来显示封面了。这里使用了video…...

Prompt Toolkit探索:打造交互式CLI应用

简介&#xff1a;prompt_toolkit 是一个 Python 的库&#xff0c;它提供了一系列功能丰富的用户界面元素&#xff0c;比如自动完成、语法高亮、多行编辑、提示等等&#xff0c;让你可以轻松地构建出功能强大的命令行工具。而且&#xff0c;这个库还被 IPython 和 pgcli 这样的知…...

【已解决】AttributeError: module ‘gradio‘ has no attribute ‘outputs‘

问题描述 AttributeError: module gradio has no attribute outputs 不知道作者用的是哪个gradio版本&#xff0c;最新的版本报错AttributeError: module gradio has no attribute outputs &#xff0c; 换一个老一点的版本会报错AttributeError: module gradio has no attribu…...

保姆级教程:用Python+NumPy复现经典Laplacian曲面编辑算法(附源码)

从理论到代码&#xff1a;Python实现Laplacian曲面编辑的完整指南 在三维图形处理领域&#xff0c;Laplacian曲面编辑技术因其出色的细节保持能力而备受推崇。这项技术允许开发者对三维模型进行直观的变形操作&#xff0c;同时保持模型表面的几何细节不被破坏。本文将带您从零开…...

如何快速免费管理游戏DLSS版本?DLSS Swapper终极指南

如何快速免费管理游戏DLSS版本&#xff1f;DLSS Swapper终极指南 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款革命性的开源工具&#xff0c;专为PC游戏玩家设计&#xff0c;能够智能管理、下载和…...

JetBrains IDE试用期重置终极指南:简单三步实现30天无限续杯

JetBrains IDE试用期重置终极指南&#xff1a;简单三步实现30天无限续杯 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 你是否曾经在项目开发的关键时刻&#xff0c;突然看到JetBrains IDE弹出"评估期已结束…...

Supabase AI Agent技能库:安全集成数据库操作与边缘函数调用

1. 项目概述&#xff1a;当Supabase遇上AI Agent&#xff0c;一个技能库的诞生最近在捣鼓AI Agent应用开发&#xff0c;发现一个挺有意思的现象&#xff1a;大家都能用LangChain、LlamaIndex这些框架快速搭出个Agent的架子&#xff0c;但真想让这个Agent去干点具体、有用的活儿…...

番茄小说下载器:打造属于你的个人数字图书馆终极指南

番茄小说下载器&#xff1a;打造属于你的个人数字图书馆终极指南 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 你是否曾经遇到过这样的场景&#xff1f;深夜追更小说时网络突然断线&…...

AI 术语通俗词典:计算图

计算图是深度学习、自动微分、神经网络训练和人工智能框架中非常重要的一个术语。它用来描述&#xff1a;把一次数学计算过程表示成由节点和边组成的图结构。换句话说&#xff0c;计算图是在回答&#xff1a;模型中的输入、参数、运算和输出之间&#xff0c;到底是如何一步步连…...

基于GitHub Pages与Jekyll的静态博客搭建与深度定制指南

1. 项目概述&#xff1a;一个静态博客的诞生与演进如果你对搭建个人博客感兴趣&#xff0c;或者正在寻找一个轻量、高效、完全可控的线上空间&#xff0c;那么“RyansGhost/RyansGhost.github.io”这个项目仓库&#xff0c;很可能就是你一直在寻找的答案。这不仅仅是一个托管在…...

DIY蓝牙游戏手柄:基于Bluefruit EZ-Key的免编程硬件制作全攻略

1. 项目概述与设计思路几年前&#xff0c;我还在用有线手柄在电脑上打游戏&#xff0c;那根线总是缠来缠去&#xff0c;桌面也乱糟糟的。后来市面上无线手柄选择多了&#xff0c;但总感觉少了点自己动手的乐趣&#xff0c;功能也千篇一律。直到我开始接触像Adafruit Bluefruit …...

EmoLLM:大语言模型的情感增强训练与部署实践

1. 项目概述&#xff1a;当大语言模型学会“察言观色”最近在折腾一个挺有意思的开源项目&#xff0c;叫SmartFlowAI/EmoLLM。光看名字你大概能猜到&#xff0c;这玩意儿跟“情绪”和“大语言模型”有关。没错&#xff0c;它的核心目标就是让冷冰冰的LLM&#xff08;Large Lang…...

AI 能不能教孩子提问

AI 能不能教孩子提问 家长更该警惕的场景是&#xff1a;孩子一遇到卡点&#xff0c;就把题拍给 AI&#xff0c;等一个完整答案&#xff0c;然后连自己卡在哪里都说不出来。 这和用不用 AI 关系没那么简单。真正伤人的地方在于&#xff1a;孩子把困惑表达、假设尝试、错误修正这…...