21 shell Here Document/String
Here Document 的用法
Here Document可以将它理解为“嵌入文档”“内嵌文档”“立即文档”,它将命令需要处理的数据或者字符串与代码放在一起,适用于命令需要处理的数据量很小,不必要将其单独放在一个文件中的情况。
总的来说,在脚本中嵌入一小段多行数据时,使用Here Document是很有用的,但是嵌入很大数据时,还是应该保持你的逻辑(你的代码)和你的输入(你的数据)分离,最好是在不同的文件中。
| 用法 | 说明 | |
|---|---|---|
| command <<END document END |
|
|
| 需求 | 脚本 | 结果 |
|
cat 命令一般是从文件中读取内容,并将内容输出到显示器上, 借助 Here Document,cat 命令可以从键盘上读取内容 |
cat <<TEST > test1 > Test > TEST #终止符前有空格,不生效 > TEST #顶格写的终止符,不会输出 |
test1 Test TEST
正文中也可以出现结束标志 并且不顶格写,就不会生效。 |
| 在脚本文件中使用 Here Document,并将 document 中的内容转换为大写。 |
|
ONE TWO THREE ABCDEFGH tr命令 将小写字母转换称大写字母 |
|
命令替换 默认情况下,document中出现的变量或命令会被求值或运行,Shell 会先将它们替换以后再交给 command 但也可以将分界符用单引号或者双引号包围起来使 Shell 替换失效 |
1.默认情况
2.使用单/双引号包围END使命令替换失效 1)单引号
2)双引号
|
输出:qpy is a girl 输出:${name} is a girl 输出:${name} is a girl |
|
在脚本文件中使用 Here Document时,如果在document的行首使用制表符时, 默认情况下,行首的制表符也被当做正文的一部分,但也可以通过在 制表符主要是用于代码对齐 |
1.默认情况 #!/bin/bash cat <<END aaa bbb ccc END 2.在 #!/bin/bash cat <<-END aaa bbb ccc END |
输出
输出
|
| Here Document 最常用的功能还是向用户显示命令或者脚本的用法信息 |
|
|
Here String的用法
Here String 是 Here Document 的一个变种
| 用法 | 说明 | |
|---|---|---|
| command <<< string |
|
|
| 需求 | 脚本 | 结果 |
| 将小写字符串转换为大写字符串 |
tr a-z A-Z <<< one |
ONE |
| 使用双引号,会解析字符串中的变量 |
tr a-z A-Z <<< "one two three" var=two tr a-z A-Z <<<"one $var there" |
ONE TWO THREE ONE TWO THREE |
| 使用单引号,不会解析变量 |
var=two tr a-z A-Z <<<'one $var there' |
ONE $VAR THERE |
| 使用引号,Here String 可以接收多行字符串作为命令的输入 |
tr a-z A-Z <<<"one two there > four five six > seven eight" |
ONE TWO THERE FOUR FIVE SIX SEVEN EIGHT |
21 shell Here Document/String的更多相关文章
- 【Shell脚本学习24】Shell输入输出重定向:Shell Here Document,/dev/null文件
Unix 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示.一般情况下,标准输入设备就是键盘,标准输出设备就是终端,即显示器. 输出重定向 命令的输出不仅可以 ...
- Linux Shell Here Document
Here Document 是一种有特殊用处的代码块,他使用IO重定向的形式记录了一段临时的文本或交互命令,并且把这些文本或命令 依次的传递给一个程序或一个命令,作为他运行时的标准输入. Here d ...
- Linux编程 21 shell编程(环境变量,用户变量,命令替换)
一.概述 这篇介绍shell的变量使用,跟其实语言一样,都有声明变量,使用变量,在shell中变量允许你临时地将信息存储中shell脚本中,以便和脚本的其他命令一起使用. 1.1 环境变量 在前面章节 ...
- String 和 document 的相互转换总结
转自:http://blog.sina.com.cn/s/blog_7f865faf01014qrs.html 一.使用最原始的javax.xml.parsers,标准的jdk api // 字符串转 ...
- [Bash Shell] Shell学习笔记
1. Shell简介 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命 ...
- [转帖][Bash Shell] Shell学习笔记
[Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html 阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...
- Shell碎碎念
1. 字符串如何大小写转换 str="This is a Bash Shell script." 1> tr方式 newstr=`tr '[A-Z]' '[a-z]' < ...
- linux的shell脚本入门
Linux shell脚本入门教程 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活 的工具.Shell不仅仅是命令的收集,而且是一门非常 ...
- linux shell基础语法
1.第一个Shell脚本 打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了. 输入一些代码 ...
随机推荐
- CENTOS 7 下配置默认网关
1. ip route 显示和设定路由 1.1 显示路由表 [root@linux-node1 ~]# ip route show default via 192.168.56.2 dev eth0 ...
- 《Java架构师的最佳实践》生产环境JVM调优之空间担保失败引起的FullGC
1 问题现象 应用prod-xxx-k8s,在内存足够的情况下,仍然会产生偶发FullGC的问题. JVM配置如下: -Xmx8192m -Dhsf.server.max.poolsize=2500 ...
- 企业实施CRM系统后的积极作用
公司在发展过程中,可能会遇到各种各样的问题,尤其是来自客户的问题,是最令广大企业头痛的.这并不是一个单方面的问题,不仅涉及到员工也涉及到企业.因此,许多企业使用CRM客户管理系统来管理客户,并通过它来 ...
- ffmpeg安装之linux编译安装
转发自白狼栈:查看原文 关于ffmpeg的安装,有的人可能要折腾很久,甚至折腾一个礼拜,究其原因,基本都是编译安装惹的祸. 我们提供4种安装方式,最复杂的莫过于centos7上的编译安装. ffmpe ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十六)——dapr+sentinel中间件实现服务保护
dapr目前更新到了1.2版本,在之前4月份的时候来自阿里的开发工程师发起了一个dapr集成Alibaba Sentinel的提案,很快被社区加入到了1.2的里程碑中并且在1.2 release 相关 ...
- 如何优雅的做参数校验-JSR330
前言: 本文不是讲@Validate.@Valid是如何使用的.区别是什么,想看这些内容的请换篇文章. 背景: 当前端传过来的参数是进行对称性加密.base64加密等处理后过的参数时,在control ...
- 3DPytorch-API NVIDIA Kaolin
3DPytorch-API NVIDIA Kaolin NVIDIA Kaolin library provides a PyTorch API for working with a variety ...
- PyTorch 自动微分
PyTorch 自动微分 autograd 包是 PyTorch 中所有神经网络的核心.首先简要地介绍,然后将会去训练的第一个神经网络.该 autograd 软件包为 Tensors 上的所有操作提供 ...
- 代码生成codegen
代码生成codegen 该模块提供了从SymPy表达式生成直接可编译代码的功能.该codegen功能是SymPy中代码生成功能的用户界面.下面为可能希望直接使用框架的高级用户提供了一些实现细节. 注意 ...
- CVPR2020:利用图像投票增强点云中的三维目标检测(ImVoteNet)
CVPR2020:利用图像投票增强点云中的三维目标检测(ImVoteNet) ImVoteNet: Boosting 3D Object Detection in Point Clouds With ...
