本文讲解在Linux操作系统下Bash Heredoc(Here document)的用法,及基本的Heredoc示例、将Heredoc和SSH一起使用。

简介

在编写shell脚本时,您可能需要将多行文本或代码传递给交互式命令(例如tee、cat或sftp)。

在Bash和Zsh等其他shell中,Here document(Heredoc)是一种重定向类型,允许您将多行输入传递给命令。

Heredoc用法

编写Bash Heredoc(Here document)的用法采用以下形式:

[COMMAND] <

HERE-DOCUMENT

DELIMITER

说明:

1、第一行以可选命令开头,后跟特殊重定向操作符<

您可以使用任何字符串作为分隔标识符,最常用的是EOF或END。

如果未使用定界标识符,则在将此处文档行传递给命令之前,shell将替换所有变量、命令和特殊字符。

在重定向运算符<

2、here-document处可以包含字符串、变量、命令和任何其他类型的输入。

3、最后一行以定界标识符结尾,分隔符前面不允许有空格。

基本的Heredoc示例

下面,我们将介绍一些如何使用heredoc的基本示例。

在下面的示例中,我们传递了两行文本,其中包含一个环境变量和一个使用here文档进行分类的命令:

cat << EOF

The current working directory is: $PWD

You are logged in as: $(whoami)

EOF

从下面的输出中可以看到,变量和命令输出都被替换了:

The current working directory is: /home/ywnz

You are logged in as: ywnz

让我们看看如果将定界符括在单引号或双引号中会发生什么:

cat <

The current working directory is: $PWD

You are logged in as: $(whoami)

EOF

您会注意到,当用引号引起来时,shell不会进行任何参数扩展和命令替换:

The current working directory is: $PWD

You are logged in as: $(whoami)

如果在语句或循环中使用Heredoc,请使用<

if true; then

cat <

Line with a leading tab.

EOF

fi

返回:

Line with a leading tab.

您可以使用>,>>运算符将输出重定向到文件,而不是在屏幕上显示输出:

cat << EOF > file.txt

The current working directory is: $PWD

You are logged in as: $(whoami)

EOF

如果file.txt不存在,它将被创建。使用>时,文件将被覆盖,而>>则将输出附加到文件。

Heredoc输入也可以通过管道传递。在以下示例中,sed命令将用e替换l字符的所有实例,参考sed命令_Linux sed命令使用详解:功能强大的流式文本编辑器:

cat <

Hello

World

EOF

返回:

Heeeo

Wored

要将管道数据写入文件:

cat < file.txt

Hello

World

EOF

将Heredoc和SSH一起使用

使用不带引号的定界符时,请确保转义所有变量,命令和特殊字符,否则它们将在本地插入:

ssh -T user@host.com << EOF

echo "The current local working directory is: $PWD"

echo "The current remote working directory is: \$PWD"

EOF

返回:

The current local working directory is: /home/ywnz

The current remote working directory is: /home/user

您可能还希望设置基于SSH密钥的身份验证并连接Linux服务器而不输入密码,可根据需求来设置。

相关主题

linux中here文档,Linux下Bash Heredoc(Here document)的用法及基本示例相关推荐

  1. linux如何扫描文件格式,如何使用SANE最有用的命令在Linux中扫描文档

    简易扫描仪访问( 这是充分利用 立即行动起来 可以使用程序包管理器来安装API.例如,在Debian系统中: sudo apt install sane -安装并提供命令行应用程序scanimage. ...

  2. 如何在linux部署pdf文档,LINUX安装部署文档.pdf

    LINUX 安装部署详解文档 文档内容简介: 一:详解安装前的准备工作---------------------- 二:安装LINUX ---------------------------... 三 ...

  3. Linux中显示文档第三行内容,Linux下工作常使用的命令(持续整理)

    1.路径/文件显示 pwd:显示当前路径 cd ..:返回上一级路径 cd:返回最顶层路径 ls -a: 显示全部文件(包括隐藏文件) ls –l(ll): 以列表方式显出文件: 包括权限(模式).所 ...

  4. Linux中编辑文档

    vi document: i //键盘上敲 i,进入编辑模式 ESC //敲[ESC]键,退出编辑模式 :wq //保存退出 :q! //不保存,强制退出

  5. linux部署项目文档,Linux系统部署项目

    Linux系统部署项目 在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署.在下文中$CATALINA_HOME指的是Tomcat根目录. 一.静态部署 静态部署指的是我们在服 ...

  6. linux部署项目文档,Linux上部署综合项目专业资料.doc

    LINUX上布署项目过程 1 准备工作 1.下载安装Xshell.Xftp(用于远程连接Linux主机,具体自行baidu) 2.官网下载Linux下tomcat安装包,我用是: apache-tom ...

  7. linux期中架构文档,Linux期中架构 - osc_jbr77wuo的个人空间 - OSCHINA - 中文开源技术交流社区...

    1    在构建完模板后  开启虚拟机后 需要再重启一次  以解决网卡不能看见的问题 ########################################add begin 2018-05 ...

  8. 在linux桌面上创建一个文本,如何在Ubuntu中创建文档

    有几种方法可以在Ubuntu中使用GUI和命令行创建文档.所有这些方法都非常简单易用.您可能早些时候已在Ubuntu中将这些方法用于其他目的.但是,在本文中,我们将向您展示在Ubuntu中创建文档的8 ...

  9. python如何读取公共盘的文档_如何使用 Sphinx 给 Python 代码写文档 | Linux 中国

    最好将文档作为开发过程的一部分.Sphinx 加上 Tox,让文档可以轻松书写,并且外观漂亮.-- Moshe Zadka Python 代码可以在源码中包含文档.这种方式默认依靠 docstring ...

最新文章

  1. ArcGIS Engine 项目10.1升级10.2
  2. matplotlib 横坐标只显示整数_matplotlib初学:这样画折线图和添加标注、箭头
  3. 右键菜单_windows右键菜单管理!
  4. Redis高可用方案-RedisCluster-SpringBoot整合
  5. 数据迁移,不停机上线的正确姿势
  6. MVCToolKit中HtmlHelper.ActionLink的BUG?
  7. 杭电 hdu 2019
  8. Android 数据Parcel序列化过程源码分析
  9. 退出所有循环_探索未知种族之osg类生物---呼吸分解之事件循环三
  10. 数值计算实验1 Matlab基础实验
  11. python聚类分析实例_Biopython - 聚类分析
  12. 基于角色的权限管理系统设计思路
  13. 手把手教你如何用PhotoShop制作gif动画
  14. 项目:任务清单(Vuex)
  15. 运行maven项目报错 :The forked VM terminated without saying properly goodbye. VM crash or System.exit calle
  16. 【U8+】数据库清空U8+admin密码
  17. Ish iphone和iPad上的终端模拟器-ISO-linux-Shell
  18. # 2gether 在一起 # 一份生日Party邀请函待查收
  19. 计算机硬件部份的核心部件是,计算机硬件的核心部分是什么?
  20. 用shell打印正三角形_用shell命令绘制三角形

热门文章

  1. main函数执行前执行一个函数的写法
  2. 2019年湘潭大学程序设计竞赛(重现赛)F.Truthman or Fakeman(并查集)
  3. html lt;ligt; 属性,HTML文件中lt;HRgt;标签各个属性的作用是什么?
  4. 还在犹豫吗?现在参与 OCM 社区正是时候
  5. 阿里高级技术专家:整洁的应用架构“长”什么样?
  6. 主创仅2人,题材是大型3D战争,这款游戏竟然“超逼真”?
  7. 安卓工控主板双网口有什么用途?
  8. sequence跳号问题及解决办法
  9. linux打开ftp功能的方法
  10. 判断一个点是否在三角形内