一定很容易。 [编辑]我正在编写一个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的输入并导致错误。
谢谢。
答案 0 :(得分:2)
它应该无需修改
我的简单测试有效:
cat << HERE
$BASHPID
'$BASHPID'
HERE
返回
4608
'4608'
这是因为
答案 1 :(得分:1)
你试过吗?这个对我有用。检查手册页,确认here-document的所有行都要进行参数扩展。
here-documents的格式为:
<<[-]word here-document delimiter
没有参数扩展,命令 替换,算术扩展或 执行路径名扩展 字。如果单词中有任何字符 引用,分隔符是结果 引用删除单词和行 在here-document中没有扩展。 如果单词没有引用,则所有行都是 这里 - 文件受到 参数扩展,命令 替换和算术 扩张。在后一种情况下, 字符序列\是 被忽略了,\必须用来引用 字符\,$和`。