zoukankan      html  css  js  c++  java
  • Linux Bash Heredoc 使用示例

    前言

    编写shell脚本时,您可能需要将多行文本或代码块传递给交互式命令,例如tee,cat或sftp。在Bash和其他类似Zsh的shell中,Here document(Heredoc)是一种重定向,允许您将多行输入传递给命令。

    “Here Document” 目前没有统一的翻译,你可以将它理解为“嵌入文档”、“内嵌文档”、“立即文档”。

    语法

    command <<END
        document
    END
    

    第一行以可选命令开头,后跟特殊重定向运算符 <<分隔标识符

    分割标识符

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

    说明

    • here-document块可以包含字符串,变量,命令和任何其他类型的输入。
    • 如果分隔标识符未加引号,分隔符中间的内容可以使用所有变量,命令和特殊字符
    • 将减号(-) 添加到重定向运算符 <<后面会忽略指标符,仅限制表符。
    • 最后一行以分隔标识符结束。末尾分隔符前是不允许有空格的,且分隔符单独占用一行
    • 正文中也可以出现分隔标识符,只要它不是独立的一行,并且不顶格写,就没问题。

    案例

    新建一个自定义文件

    > cat ./mysql.conf << EOF
    package public
    
    const (
    	MysqlUserName = "test"
    	MysqlPassword = "test123456"
    	MysqlAddress  = "127.0.0.1:3306"
    	MysqlDbName   = "test"
    )
    
    EOF
    

    上面案例创建了一个 mysql.conf 文件。并且在文件中写入了这些内容:

    package public
    
    const (
    	MysqlUserName = "test"
    	MysqlPassword = "test123456"
    	MysqlAddress  = "127.0.0.1:3306"
    	MysqlDbName   = "test"
    )
    
    

    <<- 忽略指标符

    > cat <<- EOF
    package public
    
    const (
    	MysqlUserName = "test"
    	MysqlPassword = "test123456"
    	MysqlAddress  = "127.0.0.1:3306"
    	MysqlDbName   = "test"
    )
    
    EOF
    

    上面案例会在控制台打印这些内容:

    package public
    
    const (
    MysqlUserName = "test"
    MysqlPassword = "test123456"
    MysqlAddress  = "127.0.0.1:3306"
    MysqlDbName   = "test"
    )
    

    我们可以看到代码没有锁进了

    "EOF" 忽略命令替换

    > cat << "EOF"
    echo $PWD
    EOF
    

    上面案例会在控制台打印这些内容:

    echo $PWD
    

    我们可以看到$PWD 没有被解析成具体路径

    后记

    参考http://c.biancheng.net/view/3109.html

    博客中所涉及到的图片都有版权,请谨慎使用
  • 相关阅读:
    python接口自动化测试二十四:上传多个附件,参数化
    python接口自动化测试二十三:文件上传
    python接口自动化测试二十二:文件下载
    python接口自动化测试二十一:类和方法
    Delphi开发ocx插件的调试
    Confluence 6 推荐的更新通知设置和禁用
    Confluence 6 配置推荐更新邮件通知默认的初始化设置
    为 Confluence 6 分发包设置一个邮件会话
    Confluence 6 测试电子邮件设置
    为 Confluence 6 配置发送邮件消息
  • 原文地址:https://www.cnblogs.com/shuiche/p/14810050.html
Copyright © 2011-2022 走看看