【shell脚本】shell脚本之expect用法、数组元素个数获取、数组元素所有元素的获取、字符串长度的获取

191 篇文章 0 订阅
订阅专栏

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

有需要的可以从这里开始,可以教会你如何去进行shell脚本的编写,提高你的工作效率。
从第一篇基础开始:
【shell脚本】shell脚本之概念、运行方式、变量的使用、交互式脚本、运算(shell脚本基础学习一)_向往风的男子的博客-CSDN博客

一、expect转义注意事项
将特殊符号进行转义,即 \[ 

但是有时候,语句里面特殊符号太多,一个个转义太麻烦。

1. 可以使用send -- {}格式,将send的内容放到大括号中转义。

如,将send “awk 'BEGIN{FS=[ ,]} { print $2+$4 }' file\r ”替换成

send -- {awk 'BEGIN{FS=[ ,]} { print $2+$4 }' file}

send -- \r

2. 通过读取文件内容来send内容。

如,将" awk 'BEGIN{FS=[ ,]} { print $2+$4 }' file ”命令写到一个文件里面。

然后在expect中读文件,读出来的内容就可以直接send出去,不用转义。

set file [open "awk_cmd"] 
 while { [ gets $awk_cmd line ] >= 0 } {
     send "$line\r" 
 }



BTW,在expect中也会遇到类似问题,可以用 -ex {},把语句放到大括号中即可。

expect -ex { aaa {[bbb] ccc} }


二、Shell 数组元素个数${#array[@]} 数组的所有元素${array[*]} 字符串长度${#str}
1、获取数组元素的个数:
        array=(bill   chen  bai   hu);
        num=${#array[@]}                          //获取数组元素的个数。
       遍历数组就变成非常简单的事情:
       for ((i=0;i<num;i++))
       {
                         echo   $array[i];
       }


![img](https://img-blog.csdnimg.cn/img_convert/e6ff15a877de25a159f34ae1e33cb327.png)
![img](https://img-blog.csdnimg.cn/img_convert/c210eee29de462da55babb1e54e081ff.png)
![img](https://img-blog.csdnimg.cn/img_convert/fa40e7fa4174387eccc7562753524544.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

(13)Shell脚本数组元素个数
m0_46498597的博客
02-07 450
A、Shell 是一个 C 语言编写的脚本语言,它是用户与 Linux 的桥梁,用户输入命令交给 Shell 处理,shell是一个命令解释器,是一个工具箱, Shell 将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户;B、Shell Script,Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。
expect数组遍历ip密码使用scp自动输入密码拷贝文件
崔崇鑫的博客,你linux/云运维工作中的百科全书。
09-24 3203
文章目录说明代码执行结果 说明 代码不做说明了,之前已经做过很多详细详细的说明,只是遇到了不同的使用场景,记录一下而已。 代码 因为是在生产环境执行的脚本,所以下面的ip有修改过。 [root@controller01 ccx]# cat iptables.sh #!/bin/bash # 这个是IP地址文件,格式为:IP 密码 #file=/root/ccx/iplist.txt file=/root/ccx/ip4.txt cat $file|while read line do # 定义一个a数组
Shell学习15天(Expect)- 07day
01-20
(一) Expect 定义 expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。Expect是一个用来实现自动交互功能的软件套件 (Expect [is a] software  expect自动交互流程: spawn启动指定进程—expect获取指定关键字—send向指定程序发送指定字符—执行完成退出. (二) expect常用命令总结: interact:执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而   不是留在远程终端上。 spawn 交互程
Linux:shell脚本数组和脚本免交互
Besteady的博客
08-19 400
数值型字符型 (如果元素值为字符类型,需要加单引号或双引号,防止单个元素中有空格被当成2个元素)混合型数值+字符(1)数组名=(value1 value2 value3 value4 ...)(2)获取数组的长度(3)获取数组下标对应的值(4)数组的遍历(5)数组切片(6)数组替换(7) 数组删除和指定下标的值删除(8)数组追加元素第一种 直接使用下标进行元素的追加第二种 将数组的长度作为下标进行追加元素第三种:使用+=进行追加(9)查看所有数组。
Shell中的数组
Hwulawulawula的博客
10-21 877
一:基本数组 数组可以让用户一次赋予多个值,需要读取数据只需要通过索引调用就可以读出 (1)数组语法数组名称=(元素1 元素2 元素3...) ARRAY1=('a' 'b' 'c' 'd') (2)数组读出${数组名称[索引]} 索引默认是元素在数组中的排队编号,默认第一个从0开始 [root@localhost ~]# echo ${ARRAY1[2]} c (3)数组赋值 方法1: 一次赋一个值 ARRAY1[4]='E' 方法2:一次赋多个值 ARRAY2=('a' '
shell脚本shell脚本expect用法数组元素个数获取数组元素所有元素获取字符串长度获取(1)
最新发布
2401_84562529的博客
05-10 246
shell的专栏,我会详细地讲解shell的基础和使用,以及一些比较常用的shell技巧。有需要的可以从这里开始,可以教会你如何去进行shell脚本的编写,提高你的工作效率。
linux expect 详解
热门推荐
zxycyj1989的博客
07-17 1万+
网上关于linux expect介绍的文章少而且杂乱。介绍的也不全面,并且没有找到权威的说明。这里整合一下各类分散的知识点的介绍,相对详细的总结expect的使用方法
shell脚本报错:”[: =: unary operator expected”解决办法
01-20
shell脚本报错:”[: =: unary operator expected”解决办法  在匹配字符串相等时,我用了类似这样的语句: if [ $STATUS == OK ]; then echo OK fi  在运行时出现了 [: =: unary operator expected 的错误,就...
Shell脚本专家指南
04-29
Shell脚本专家指南》旨在为Linux、Unix以及OSx系统管理员提供短小精悍且功能强大的shell实现解决方案,教会读者如何使用现有调试器调试shell脚本。全书分为3个部分:脚本技术基础、系统交互和高级技术、有用的脚本...
Mipow-Playbulb-BTL201:基于期望和gatttool的功能齐全的Shell脚本接口,用于Mipow Playbulb BTL201(可能还有其他)
05-23
Mipow-Playbulb-BTL201 基于Mipow Playbulb的Expect和gatttool的全功能Shell脚本界面。 与以下型号兼容(应该兼容): Mipow Playbulb Rainbow(BTL200),测试版。 BTL200_v7 /应用程序版本2.4.3.26(无蜡烛效果) ...
shell编程中expect 的一般用法
jia_xue的博客
02-05 649
是一个强大的工具,它基于Tcl语言开发,主要用于自动化交互式程序的控制。当执行脚本时遇到需要用户输入的情况(如SSH登录、密码验证或其他等待输入的命令行程序),可以使用。来模拟这些交互过程,从而实现非交互式的自动化执行。在Shell编程中,
Shell #的用法, ${#arrayname[@]}获取数组元素个数, $arrayname[index]获取属于一个元素 获取数组中的所有元素${arr...
qq_43193797的博客
09-17 2835
shell中$#表示输入参数的个数; 在shell中#用来获取一些和长度,个数相关的信息: shell中定义一个数组: arrayname=(value1 value2 ... valuen); 获取数组元素个数: 那么${#arrayname[@]}表示数组中元素个数...
shellshell脚本实战-expect语言的使用
2401_83916326的博客
04-18 368
面试前的“练手”还是很重要的,所以开始面试之前一定要准备好啊,不然也是耽搁面试官和自己的时间。我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取![外链图片转存中…(img-wFJkfIuy-1713403968427)]
Shell 之 免交互编程(expect用法)
weixin_71438279的博客
08-16 2842
Here Document 是标准输 入的一种替代品,可以帮助脚本开发人员不必使用临时文件来构建输入信息,而是直接就地 生产出一个文件并用作命令的标准输入,Here Document 可以与非交互式程序和命令一起使用。...............
shell下使用expect遍历服务器
hu薇的博客
05-27 3064
ips=( ip1... ip2... ip3... ... ) for ip in ${ips[*]} do /usr/bin/expect set timeout 90 spawn ssh user@$ip expect "passphrase" send "password\r" expect "user" send "cd /dir\r" expect "di
shell脚本expect指令返回值获取
05-26
expect脚本中,可以使用`$?`来获取上一条指令的返回值。比如: ``` #!/usr/bin/expect spawn ssh user@192.168.1.100 expect "password:" send "mypassword\r" expect "$ " send "ls -l /tmp\r" expect "$ " set result $? puts "The return value is $result" ``` 在上面的脚本中,`$?`获取了`ls -l /tmp`命令的返回值,并将其赋给变量`result`。然后使用`puts`命令将返回值输出到屏幕上。注意,`$?`的值是一个整数,通常情况下,0表示成功,非零值表示失败。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 2024年最新详解爬虫模拟登陆的三种方法_爬虫登录 1266
  • 2024年Python爬虫,你是否真的了解它? 1044
  • 2024年Android最新差分隐私技术在火山引擎的应用实践(1),大厂面试经验分享稿 1036
  • 最新专科出身,苦学Android,最终圆梦阿里(1),阿里ios面试 1015
  • 2023年软件测试领域只会功能测试的我们,已经快要寸步难行 985

分类专栏

  • 程序员 191篇
  • 2024年程序员学习

最新评论

  • 2024年最新词达人小工具2

    2401_85017367: 第一版看不到呀

  • 安全测试 —— Jmeter 登录接口密码 - rsa加密_jmeter rsa加密程序

    普通网友: 引领技术潮流,是不可多得的好文,十分值得借鉴和参考。期待博主未来能够持续分享更多好文【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • 2024年最全软件测试 Python random模块,超乎想象的强大(4),2024年最新写给正在求职的软件测试开发

    大彬子学Android: 干货满满,实用性强,博主的写作风格简洁明了,让人一目了然。文章涵盖了很多实用的知识点。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • 2024年最新速看!!!一套能直接拿捏大厂面试官的软件测试面试宝典,2024年最新难道软件测试真的凉了

    普通网友: 文章内容通俗易懂,适合不同层次的读者。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • 2024年Android最全干了快3年Android了,感觉自己的职业生涯已经快凉了,2024年最新安卓网络通信面试题

    普通网友: 支持一下,细节很到位!【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

大家在看

  • CORS解决方案汇总
  • 计及碳捕集电厂低碳特性的含风电电力系统源–荷多时间尺度调度方法(Matlab代码实现)
  • 《TCP/IP网络编程》(第十四章)多播与广播 1265
  • Day 14:2938. 区分黑球和白球 198
  • 基于飞机配电优化负荷管理系统研究(Matlab代码实现)

最新文章

  • 2024年最全底层学习---Android-IPC机制(四)Messenger,2024年最新大学生android开发项目实例
  • 2024年最全底层学习---Android-IPC机制(二)序列化机制(1),2024年最新android系统工程师面试宝典
  • 2024年最全年薪90万程序员,被月入3800公务员狂怼!到底什么工作更香?(1),2024年最新蚂蚁金服前端面试题
2024
05月 201篇
04月 13篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

两个鬼故事叶无道徐灵儿全文免费阅读下载笔趣阁微商怎样起店名王字好听的女孩起名给宝宝取名起名大全免费网宝宝起名软件注册码春染绣榻拍照翻译眼镜店名字怎么起演员请就位第二季翡翠店起名字大全课堂教学狗鲨重庆同志李连杰的真实家世封腾日语 起名办公室恋情大刀电视剧阳谋高手一路唱响开曼公司起名密查电视剧窗帘店怎么起名电玩巴士网站石姓起名女孩火车头采集器破解版寻找里美宝宝起名子恒是什么意思金马奖事件寓意好成语起名字少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化