Shell脚本之免交互操作

本文介绍了Shell脚本中Here Document的用法,包括定义、变量设定和多行注释,以及 Expect工具的定义、安装、相关命令和应用场景,如su切换用户、ssh免交互和scp脚本的实现。
摘要由CSDN通过智能技术生成

目录

一、Here Document免交互

1.免交互定义

(1)格式

(2)例子

2. Here Document 变量设定

(1)例1写入文件时会先将变量替换成实际值

(2) 例2整体赋值给变量输出,然后通过echo命令将变量值打印出来

(3) 在标记上添加双引号,关闭变量替换的功能

3.多行注释

二、expect

1.expect 定义

2.expect安装

3.expect中相关命令

(1)脚本解释器

(2)spawn 启动新的进程(监控,捕捉)

(3)expect 从进程接收字符串

(4)send 用于向进程发送字符串

(5)exp_continue 匹配多个字符串在执行动作后加此命令

(6)expect eof

(7)interact 允许用户交互

(8)set

(9)传递参数

4.应用

(1)su切换用户,免交互

(2) ssh免交互

(3)免交互scp脚本 

三、总结


一、Here Document免交互

1.免交互定义

使用I/O重定向的方式将命令列表提供给交互式程序

标准输入的一种替代品,可以帮助脚本开发人员不必使用临时文件来构建输入信息,而是直接就地 生产出一个文件并用作命令的标准输入,Here Document 可以与非交互式程序和命令一起使用

(1)格式

语法格式
命令 << 标记
....
输入内容
......
标记

标记可以使用任意的合法字符(通用的字符是EOF)

结尾的标记一定要顶格写,前面不能有任何字符(包括空格)

结尾的标记后面也不能有任何字符(包括空格)

开头标记前后空格会被省略掉

单引号 变量双引号 —

(2)例子

 

2. Here Document 变量设定

Here Document 也支持使用变量,如果标记之间有变量被使用,会先替换变量值。如 果想要将一些内容写入文件,除了常规的方法外,也可以使用 Here Document。如果写入 的内容中包含变量,在写入文件时要先将变量替换成实际值,在结合 cat 命令完成写入

(1)例1写入文件时会先将变量替换成实际值

(2) 例2整体赋值给变量输出,然后通过echo命令将变量值打印出来

(3) 在标记上添加双引号,关闭变量替换的功能

 

3.多行注释

 Bash的默认注释是“#”,该注释方法只支持单行注释: Here Document 的引入解决了多行注释的问题

“:"代表什么都不做的空命令。中间标记区域的内容不会被执行,会被bash忽略掉,因此可达到批量注释的效果

#!/bin/bash
file="yxp2.txt"
var="park"
myvar=$(cat <<EOF >$file
I am going to the $var.
I will go to play with my friends.
I am very happy.
 
EOF
)
echo $myvar
###下面部分就被注释了不会显示
:<<EOF
echo "I am going to the $var"
echo "I am very h

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值