bash引用了sqlplus + heredoc中的变量替换

时间:2011-06-01 13:29:09

标签: bash variables heredoc

一定很容易。 [编辑]我正在编写一个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的输入并导致错误。 谢谢。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

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

  

here-documents的格式为:

   <<[-]word
           here-document
   delimiter
     

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