【问题标题】:bash quoted variable substitution in sqlplus + heredoc [closed]sqlplus + heredoc中的bash引用变量替换[关闭]
【发布时间】:2011-09-06 07:31:52
【问题描述】:

必须是一个简单的。 [编辑] 我正在编写一个 BASH 脚本,使用 HERE 文档将一些语句重定向到 SQL*Plus 命令提示符。

sqlplus -s user/pw@db > $TMPFILE <<EOF
    SET ECHO OFF;
    SET FEEDBACK OFF;
    SET HEADING OFF;
      select x
      from a_table
      where a_field like '%$1%';
    EXIT;
EOF

当然这不起作用,因为单引号内没有替换。那我该怎么做呢?我不能做像 "'%$1%'" 这样的事情,因为双引号仍然作为 SQL*Plus 的输入并导致错误。 谢谢。

【问题讨论】:

    标签: bash variables heredoc


    【解决方案1】:

    【讨论】:

    • 哦,好吧,对不起,我又成功了 :) edit 事实上,我和 sqlplus 搞混了,这不是因为替换错误,而是因为实际 LACK我的脚本不起作用的结果。我刚刚读到在单引号内没有替换变量,所以我从那里开始搜索 - 在 HERE 文档中找不到单引号无关紧要的任何地方。谢谢你们的时间。
    【解决方案2】:

    你试过了吗?这个对我有用。检查确认here-document的所有行都经过参数扩展的手册页。

    here-documents的格式为:

       <<[-]word
               here-document
       delimiter
    

    无参数扩展,命令 替换、算术扩展或 路径名扩展在 单词。如果 word 中的任何字符是 引用,分隔符是结果 word 上的引号删除和行 在 here-document 中没有展开。 如果 word 没有被引用,则所有行 这里的文件受到 参数扩展,命令 代换和算术 扩张。在后一种情况下, 字符序列\是 忽略,并且必须使用 \ 来引用 字符 \、$ 和 `。

    【讨论】:

      猜你喜欢
      • 2015-09-06
      • 2019-03-05
      • 2013-08-09
      • 2015-04-21
      • 2011-07-17
      • 1970-01-01
      • 2016-04-30
      • 2011-12-02
      相关资源
      最近更新 更多