linux中here文档,Linux下Bash Heredoc(Here document)的用法及基本示例
本文讲解在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)的用法及基本示例相关推荐
- linux如何扫描文件格式,如何使用SANE最有用的命令在Linux中扫描文档
简易扫描仪访问( 这是充分利用 立即行动起来 可以使用程序包管理器来安装API.例如,在Debian系统中: sudo apt install sane -安装并提供命令行应用程序scanimage. ...
- 如何在linux部署pdf文档,LINUX安装部署文档.pdf
LINUX 安装部署详解文档 文档内容简介: 一:详解安装前的准备工作---------------------- 二:安装LINUX ---------------------------... 三 ...
- Linux中显示文档第三行内容,Linux下工作常使用的命令(持续整理)
1.路径/文件显示 pwd:显示当前路径 cd ..:返回上一级路径 cd:返回最顶层路径 ls -a: 显示全部文件(包括隐藏文件) ls –l(ll): 以列表方式显出文件: 包括权限(模式).所 ...
- Linux中编辑文档
vi document: i //键盘上敲 i,进入编辑模式 ESC //敲[ESC]键,退出编辑模式 :wq //保存退出 :q! //不保存,强制退出
- linux部署项目文档,Linux系统部署项目
Linux系统部署项目 在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署.在下文中$CATALINA_HOME指的是Tomcat根目录. 一.静态部署 静态部署指的是我们在服 ...
- linux部署项目文档,Linux上部署综合项目专业资料.doc
LINUX上布署项目过程 1 准备工作 1.下载安装Xshell.Xftp(用于远程连接Linux主机,具体自行baidu) 2.官网下载Linux下tomcat安装包,我用是: apache-tom ...
- linux期中架构文档,Linux期中架构 - osc_jbr77wuo的个人空间 - OSCHINA - 中文开源技术交流社区...
1 在构建完模板后 开启虚拟机后 需要再重启一次 以解决网卡不能看见的问题 ########################################add begin 2018-05 ...
- 在linux桌面上创建一个文本,如何在Ubuntu中创建文档
有几种方法可以在Ubuntu中使用GUI和命令行创建文档.所有这些方法都非常简单易用.您可能早些时候已在Ubuntu中将这些方法用于其他目的.但是,在本文中,我们将向您展示在Ubuntu中创建文档的8 ...
- python如何读取公共盘的文档_如何使用 Sphinx 给 Python 代码写文档 | Linux 中国
最好将文档作为开发过程的一部分.Sphinx 加上 Tox,让文档可以轻松书写,并且外观漂亮.-- Moshe Zadka Python 代码可以在源码中包含文档.这种方式默认依靠 docstring ...
最新文章
- ArcGIS Engine 项目10.1升级10.2
- matplotlib 横坐标只显示整数_matplotlib初学:这样画折线图和添加标注、箭头
- 右键菜单_windows右键菜单管理!
- Redis高可用方案-RedisCluster-SpringBoot整合
- 数据迁移,不停机上线的正确姿势
- MVCToolKit中HtmlHelper.ActionLink的BUG?
- 杭电 hdu 2019
- Android 数据Parcel序列化过程源码分析
- 退出所有循环_探索未知种族之osg类生物---呼吸分解之事件循环三
- 数值计算实验1 Matlab基础实验
- python聚类分析实例_Biopython - 聚类分析
- 基于角色的权限管理系统设计思路
- 手把手教你如何用PhotoShop制作gif动画
- 项目:任务清单(Vuex)
- 运行maven项目报错 :The forked VM terminated without saying properly goodbye. VM crash or System.exit calle
- 【U8+】数据库清空U8+admin密码
- Ish iphone和iPad上的终端模拟器-ISO-linux-Shell
- # 2gether 在一起 # 一份生日Party邀请函待查收
- 计算机硬件部份的核心部件是,计算机硬件的核心部分是什么?
- 用shell打印正三角形_用shell命令绘制三角形
热门文章
- main函数执行前执行一个函数的写法
- 2019年湘潭大学程序设计竞赛(重现赛)F.Truthman or Fakeman(并查集)
- html lt;ligt; 属性,HTML文件中lt;HRgt;标签各个属性的作用是什么?
- 还在犹豫吗?现在参与 OCM 社区正是时候
- 阿里高级技术专家:整洁的应用架构“长”什么样?
- 主创仅2人,题材是大型3D战争,这款游戏竟然“超逼真”?
- 安卓工控主板双网口有什么用途?
- sequence跳号问题及解决办法
- linux打开ftp功能的方法
- 判断一个点是否在三角形内