shell编程之免交互

本文深入探讨Shell编程中的免交互技术,包括Here Document的概念、使用技巧和注意事项,以及 Expect 工具的安装、基本命令和案例应用。通过Expect,你可以自动化处理交互式任务,如设置用户密码、SSH自动登录和FTP交互。
摘要由CSDN通过智能技术生成

目录

前言

一、Here Document 

1、概念

2、命令格式

3、注意事项

4、用法

5、通过 passwd 给用户设置密码

6、变量替换

7、变量设定

8、关闭变量替换功能

9、去除每行之前的TAB字符

10、多行注释

二、 Expect

1、概念

2、安装

3、基本命令

3.1  脚本解释器

3.2  spawn

3.3  expect

3.4  send

3.5  结束符

3.6  set

3.7   exp_continue

3.8  send user

3.9  接收参数

三、Expect语法

1、单分支

2、多分支

四、案例

1、创建用户并设置密码

2、实现ssh自动登录

3、通过位置变量传入获取值,修改用户密码

4、 利用expect完成FTP登录过程

总结


前言

shell脚本存在的核心意义就在于基于shell命令简化甚至省略可避免的人工操作,通过各种控制流程结构以及正则表达式等方法,逐步实现自动化操作的整个过程,由此也可见,shell并没有面向对象的思想,类似C语言,毕竟C语言是操作系统或者说是内核的核心语言。

所以,语言并无优劣之分,只是每个人使用的习惯与方式不同,换句话说,难易的不是语言,而是思想与突如其来的灵感。

一、Here Document 

1、概念

使用 I/O 重定向的方式将命令列表提供给交互式程序或命令,比如 ftp、cat 或 read 命令。
HereDocument是标准输入的一种替代品,可以帮助脚本开发人员不必使用临时文件来构建输入信息,而是直接就地生产出一个文件并用作命令的标准输入。

2、命令格式

命令  <<标记
...	
内容			#标记之间是传入内容
...
标记

3、注意事项

标记可以使用任意的合法字符;
结尾的标记一定要顶格写,前面不能有任何字符;
结尾的标记后面也不能有任何字符(包括空格);
开头的标记前后的空格会被省略 ;

4、用法

免交互方式实现对行数的统计,将要统计的内容置于标记"EOF"之间,直接将内容传给 wc -1 来统计。

  wc -l <<EOF
 > abc
 > 123
 > def
 > EOF
 3

 

5、通过 passwd 给用户设置密码

passwd lisi <<EOF
>abc1234
>abc1234   #这两行是输入的密码与确认密码
>EOF
 

6、变量替换

 #!/bin/bash

 file="EOF1.txt"
 i="school"
 cat > $file <<EOF
 I am going to $i
 EOF
 
 cat EOF1.txt

7、变量设定

 #! /bin/bash
 var="Great! I am going to school!"
 myvar=$(cat <<EOF
 This is Line 1.
 Today is Monday.
 $var
 EOF
 )

 echo "$myvar"

8、关闭变量替换功能

  #!/bin/bash
  
  var="Great! I am going to school!"
  myvar=$(cat <<'EOF'    #对标记加单引号,即可关闭变量替换
  This is Line 1.
  Today is Monday .
  $var
  EOF
  )
 
  echo $myvar

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值