数组复制 expect

变量                                                                                       /* 内存空间 存储单个元素 */

数组                                      /* 连续的内存空间 存储多个元素 */
                                          /* 多个变量的集合 */
数组名
         声明数组                         /* declare -a Ary_Name */

显示所有数组                                                 /* declare -a */

索引
数值索引                                                        /* 从 0 开始 */
稀疏格式

关联索引
bash 4.0后支持                          /* bash –version */

必须先声明 后使用                    /* declare -A Ary_Name */

赋值
全部元素
Ary_Name=()                            /* 生成列表字符串的任意动作 */

Val_1 “Val_2” …                /* “” 作为整体 */
/* a “c d” e */

f{1..3}.{txt,log}

/root/bin/*.sh                   /*glob*/

“ $()
seq 1 # $#                  /* # 间隔 */

eval echo {1..$#}       /*扫描 先将后续变量替换*/

ls /home/wang/bin/*.sh

特定元素
Ary_Name=([0]=”Var1″ [3]=”Var3″…)

一个元素
Ary_Name[#]=”…”

交互式
read -a Ary_Name                      /* a表示数组 */
Var1 Var2 Var3…                       /* echo a b c | read -a s 不行 */

最后追加
Ary_Name[${#Ary_Name[*]}]=”…”

关联数组
declare -A Ary_Nam

Ary_Nam=([Indx_Nam]=”Var1″ [Indx_Nam]=”Var1″…)

引用数组元素
${Ary_Name[Indx]}                         /* echo ${Ary_Name[Indx]} */
${Ary_Name}=${Ary_Name[0]}

${Ary_Name[*]}                               /* 所有元素 */
${Ary_Name[@]}

数组长度                                                                          /* 元素个数 */
${#Ary_Name[*]}
${#Ary_Name[@]}

删除
unset Ary_Name[Indx]                   /* 元素 */
/* 产生稀疏格式 */

unset Ary_Name                               /* 整个数组 */

expect

简介
expect                                                  /* Don Libes */
/* 基于Tcl开发 Tool Command Language */
/* 脚本中 解决 交互式问题 */

tcl语言                                                 /* 模式-动作 */

参数
-d                                                            输出调试信息

-c                                                              命令行

语句
set Var [lindex $argv #]
set 变量赋值
[lindex $argv 0] 位置变量格式

spawn                                                      启动新进程
激活此命令的执行 捕获他的输出

expect                                                       从进程接收字符串

send                                                          向进程发送字符串

exp_continue                                         匹配多个字符串
执行前一个动作后 加此命令

interact                                                    允许用户交互

expect eof                                                自动退出

例子
命令行
单分支
expect -c ‘expect “\n” {send “pressed enter\n”}’
多分枝
expect -c ‘expect “hi” {send “you hi\n”} “xixi” {send “you xixi\n”}’

expect
>
单分支
expect “hi” {send “you hi\n”}

多分支
expect “hi” {send “you hi\n”} \
“xixi” {send “you xixi\n”} \
“hehe” {send “you hehe\n”}

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/102480

(1)
倪潇洒倪潇洒
上一篇 2018-07-08 23:07
下一篇 2018-07-09 00:35

相关推荐

  • 第七周作业

    1、简述linux操作系统启动流程 inux系统启动流程大致是这样的: BIOS(Boot Sequence) –> MBR(GRUB) –> Kernel(ramdisk) –> rootfs –> /sbin/init(/etc/inittab) BIOS 主板在接通电源后,BIOS…

    2018-06-29
  • SSH端口转发实验

      本节索引: 一、SSH端口转发相关概念 二、实验:模拟SSH本地端口转发 三、实验:模拟SSH远程端口转发 四、实验:模拟SSH动态端口转发   一、SSH端口转发相关概念 在上一节我们知道,SSH会自动加密和解密所有SSH客户端和服务器之间的网络数据。但是,SSH还同时 提供了一个非常有用的功能,这就是端口转发。它能够将其他TCP端…

    Linux笔记 2018-05-22
  • 使用Systemd把自作脚本服务化(加入开机启动)

    Systemd的出现,使得自己编写的脚本可更容易的添加进系统服务,进而实现开机启动。

    例如,我们可以把最简单的hello world脚本进行扩展,将其添加进系统服务,使之开机自启动。

    Linux笔记 2018-06-12
  • 第十周博客作业

    1、Centos系统下实现httpd-2.2的安装,并分别实现prefork、worker、event等几种工作方式
    2、简述request报文请求方法和状态响应码
    3、详细描述httpd虚拟主机、站点访问控制、基于用户的访问控制、持久链接等应用配置实例

    2018-05-26
  • 网络基础

    1、网络的特征
    2、OSI模型的七层结构
    3、LAN组成

    Linux笔记 2018-06-19
  • linux基础知识

    本博文写的是linux的基础知识,比较杂,但是都很重要。

    Linux笔记 2018-07-22