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

Linex操作系统-Shell脚本(六)

九、bc命令

bc命令是一种支持任意精度的交互执行的计算器语言,可进行浮点运算和整数运算

语法

bc [选项][参数]

选项

-i:强制进入交互式模式;
-l:定义使用的标准数学库;
-w:对POSIX bc的扩展给出警告信息;
-q:不打印正常的GNU bc环境信息;
-v:显示指令版本信息;
-h:显示指令的帮助信息。

参数

文件:指定包含计算任务的文件

十、expect脚本详解

1. 安装expect

[root@localhost ~]# rpm -q expect[root@localhost ~]# yum -y install expect

2. 如何使用expect

首先expect的内部命令spawn启动指定进程-->expect获取期待的关键字-->内部命令send向指定进程发送响应内容-->进程执行完成后,退出expect程序

2.1 spawn命令

作用:启动新的产生交互的进程

语法

spawn [选项] [需要执行的shell命令或程序等]

2.2 expect命令

作用:获取从spawn命令执行的命令和程序后产生的交互信息。看看是否匹配,如果匹配,就开始执行expect进程接收字符串

语法

expect [选项] 表达式 [动作]

2.3 send命令

作用

在expect命令匹配完指定的字符后,发送指定的字符串给系统程序,在字符中可以支持部分特殊转义符,比如:n(回车)r(换行)t(制表符)等

2.4 exp_continue命令

作用

如果需要一次匹配多个字符串,那么多次匹配字符串并执行不同的动作中,可以让expect程序实现继续匹配的效果

2.5 send_user命令

作用

用来打印expect脚本信息,类似shell里的echo命令

2.6 expect变量

2.6.1 普通变量

语法

set 变量名 变量值

调取变量的方法

puts $变量名#或者send_user "$变量名"
2.6.2 位置参数变量

如何向expect脚本中像shell一样传递类似于$0、$1等位置参数,用于接收及控制expect脚本传递位置参数变量呢?

expect是通过如下语法来进行的:

set <变量名称> [lindex $argv <param index> ]

$argc 表示传入参数的个数

$argv0 表示当前执行脚本的名称

2.7 expect中if条件语句

if {条件表达式} {commands;}if {条件表达式} {commands;} else {commands;}

2.8 expect中常用关键字

2.8.1 eof关键字

eof是和spawn对应的,当spawn发送指令到终端执行起始会有一个eof,等指令在终端完毕后,在返回时eof被expect捕捉,就好比在shell中cat >>file <<OEFrr content rrEOF一样,在结束时也要有EOF,这样是对应的。因前面案例中已有举例,这里就不再举例说明。

Interact允许用户交互,由管理员结束进程。

2.8.2 timeout关键字

expect脚本我们都知道,首先spawn我们要执行的命令,然后就给出一堆expect的屏幕输出,如果输出匹配了我们的expect的正则匹配内容,我们就会send一个命令上去,模拟用户输入。

但是expect中等待命令的输出信息是有一个timeout的设定的,默认是10秒。这个特性是防止那些执行死机的命令的。一旦到了这个timeout,还是没有屏幕输出的话,expect脚本中下面的代码就会执行。或者我们在expect脚本中如果定义了timeout的响应代码的话,这些代码就会被执行。

解决这样的问题非常简单,最简单的办法就是在expect脚本的开头定义:

set timeout -1 -- 永久不超时set timeout 0 -- 立即执行set timeout XX -- 设定具体的timeout时间(秒),默认是10秒。

2.9 expect中for循环语句

{ set i 1 } 定义i的值为1{ $i <= 10 }循环的条件{ incr i 1} 制定$i的增量值,必须写在这行的末尾处,默认增量值为1

3. shell脚本调用expect的办法

1.在shell脚本中使用expect -c "..."可以在shell中调用expect编程语言

2.在shell脚本中使用/usr/bin/expect <<-EOF ...

EOF的方式可以调用绝大多数的其它脚本语言,这种方式执行命令建议使用绝对路径,而且要严格遵守expect的脚本格式

http://www.dtcms.com/a/445773.html

相关文章:

  • 2025年ASOC SCI2区TOP,基于动态模糊系统的改进灰狼算法FGWO,深度解析+性能实测
  • Go基础:输入与输出格式化详解
  • Go语言:数据压缩与解压详解
  • Odoo 前端控制器:构建无缝集成的网站页面
  • Go基础:json文件处理详解(标准库`encoding/json`)
  • 网站页头尺寸网站建设实物实训目的
  • RegNet:高效可扩展网络
  • 软考 系统架构设计师系列知识点之杂项集萃(169)
  • 大数据毕业设计选题推荐-基于大数据的人口普查收入数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
  • 实验室网站制作数据交易网站源码
  • 【Kubernetes】(二十)Gateway
  • 爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南——企业级实时数据闭环构建
  • 桂林哪里可以做网站wordpress前台不显示
  • 模拟退火粒子群优化算法(SA-PSO):原理、应用与展望
  • 不用每次都改 `easysearch.yml` 也能改启动参数 —— 用 Docker 环境变量搞定一切
  • 三问岚图,计划登陆港股对消费者意味着什么?
  • 舒尔特方格开源
  • D365财务和运营应用
  • 沧州seo公司哈尔滨seo和网络推广
  • 5.机器学习的介绍
  • 安徽合肥网站制作公司源代码
  • Flink 连接器与格式thin/uber 制品、打包策略与上线清单
  • 玩转ClaudeCode:通过Chrome DevTools MCP实现页面抓取和调试的基础入门
  • Playwright MCP vs Chrome DevTools MCP vs Chrome MCP 深度对比
  • 网页 网站 区别哪些网站可以免费申请
  • 玩转ClaudeCode:通过Chrome DevTools MCP实现智能页面抓取与调试
  • rabbitMQ续谈
  • RabbitMQ概念 与 工作原理
  • 力扣每日一题(一)双指针 + 状态转移dp 矩阵快速幂
  • [ Redis ] 数据结构储存系统