[20171120]bash使用here documents的细节

[20171120]bash使用here documents的一个小细节.txt

--//昨天看bash文档,,发现一些小细节,做一个记录,就是EOF加引号的问题.

command <<'EOF'
cmd1
cmd2 arg1
$var won't expand as parameter substitution turned off by single quoting
EOF

--//例子:

$ cat a.sh
#! /bin/bash
cat <<'EOF'
this is a test
hostname is $HOSTNAME
$(date)
EOF

$ . a.sh
this is a test
hostname is $HOSTNAME
$(date)

--//你可以发现$HOSTNAME,$(date)并没有展开或者执行转换.
--//如果写成如下:

cat <<EOF
this is a test
hostname is $HOSTNAME
$(date)
EOF

$ . a.sh
this is a test
hostname is xxxxxx
Mon Nov 20 09:22:06 CST 2017

--//可以发现现在是执行了里面的date命令,$HOSTNAME也发生了转换.

时间: 2024-08-26 05:48:57

[20171120]bash使用here documents的细节的相关文章

Bash 老司机也可能忽视的 10 大编程细节

作为一名 Bash 脚本编写经验超过 10 年的老程序员,我通常不用 Bash 处理复杂的编程任务.但作为一款我们在日常 Linux 使用中几乎无法避免的通用工具,Bash 的确有许多与我们习以为常的 C++ 和 Java 等高级语言非常不同的基础特性.在这里我并不打算讨论 Bash 编程的高阶应用,而是仅仅针对 Bash 中那些与众不同的基础特性做一简单梳理和汇总.希望对各位有所帮助. 当然,如果你对阅读博客不感兴趣,这里我再顺便推荐两个开源免费的小工具.一个是 Shell 语法检查工具 sh

命令行的艺术:linux bash命令大全详解

熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高你作为工程师的灵活性以及生产力.本文是一份我在 Linux 上工作时,发现的一些命令行使用技巧的摘要.有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂.这篇文章并不长,但当你能够熟练掌握这里列出的所有技巧时,你就学会了很多关于命令行的东西了. 这篇文章是 许多作者和译者 共同的成果. 这里的部分内容 首次 出现 于 Quora , 但已经迁移到了 Github,并由众多高手做出了许多改进. 如果你在本文中发现了错误或者存

Bash脚本学习笔记快速入门篇

脚本安全 我的所有bash脚本都以下面几句为开场白:  代码如下 复制代码 #!/bin/bash set -o nounset set -o errexit 这样做会避免两种常见的问题:     引用未定义的变量(缺省值为"")     执行失败的命令被忽略 需要注意的是,有些Linux命令的某些参数可以强制忽略发生的错误,例如"mkdir -p" 和 "rm -f". 还要注意的是,在"errexit"模式下,虽然能有效的

Bash脚本15分钟进阶教程

这里的技术技巧最初是来自谷歌的"Testing on the Toilet" (TOTT).这里是一个修订和扩增版本. 脚本安全 我的所有bash脚本都以下面几句为开场白: #!/bin/bash set -o nounset set -o errexit 这样做会避免两种常见的问题: 引用未定义的变量(缺省值为"") 执行失败的命令被忽略 需要注意的是,有些Linux命令的某些参数可以强制忽略发生的错误,例如"mkdir -p" 和 "

《UNIX/Linux 系统管理技术手册(第四版)》——2.2 bash脚本编程

2.2 bash脚本编程 UNIX/Linux 系统管理技术手册(第四版) bash特别适合编写简单的脚本,用来自动执行那些以往在命令行输入的操作.在命令行用的技巧也能用在bash的脚本里,反之亦然,这让用户在bash上投入的学习时间获得了最大的回报.不过,一旦bash脚本超过了100行,或者需要的特性bash没有,那么就要换到Perl或者Python上了. bash脚本的注释以一个井号(#)开头,并且注释一直延续到行尾.和命令行中一样,可以把逻辑上的一行分成多个物理上的多行来写,每行末尾用反斜

Git的一些细节

一.对于任何一个文件,在Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged).已提交表示该文件已经被安全地保存在本地数据库中了:已修改表示修改了某个文件,但还没有提交保存:已暂存表示把已修改的文件放在下次提交时要保存的清单中. 二.Git工作变量的设置 1./etc/gitconfig 文件:系统中对所有用户都普遍适用的配置.若使用git config 时用--system 选项,读写的就是这个文件. 2.~/.gitconfig 文件:用户

Linux下用bash命令执行名称中带有“(”符号的目录注意事项

  ***********************************************声明************************************************ 原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任. 表述有错误之处,请您留言或邮件(hyldba@163.com)指明,不胜感激. 本文转载必须保留此处:http://blog.csdn.net/huangyanlong/article/det

git bash的安装和配置教程

分布式 : Git版本控制系统是一个分布式的系统, 是用来保存工程源代码历史状态的命令行工具; 保存点 : git的保存点可以追踪源码中的文件, 并能得到某一个时间点上的整个工程项目额状态; 可以在该保存点将多人提交的源码合并, 也可以会退到某一个保存点上; Git离线操作性 :Git可以离线进行代码提交, 因此它称得上是完全的分布式处理, Git所有的操作不需要在线进行; 这意味着Git的速度要比SVN等工具快得多, 因为SVN等工具需要在线时才能操作, 如果网络环境不好, 提交代码会变得非常

Bash 中的特殊字符大全

Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是shell里面的那些个符号,各种特殊的符号在我们编写Shell脚本的时候如果能够用的好,往往能给我们起到事半功倍的效果,为此,特地将Shell里面的一些符号说明罗列成对照表的形式,以便快速的查找.看看你知道下表中的哪些Shell符号呢? Shell符号及各种解释对照表: Shell符号 使用方法及说明 # 注释符号(Hashmark[Comments]) 1.在shell文件的行首,