缩进后我的代码失败。尝试了许多选择,但未获得任何满意的结果。
#!/bin/ksh
typeset -i destCount=1
dbRole="PHYSICAL STANDBY"
RMANPGM=cat
policy="CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;"
if [[ ${destCount} -gt 0 ]] || [[ "${dbRole}" == "PHYSICAL STANDBY" ]]; then
if [[ "${policy}" == "CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;" ]]; then
${RMANPGM}<<-EOF
run{
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
}
exit
EOF
fi
else
echo "Assuming archive deletion policy set as appropriate..."
fi
尝试了"<<-EOF"
的几个选项,以除去此选项卡的“ here”文档方法,但没有运气。如果我添加哈希<<#EOF
,则它可以正常工作。但是,我不想使用#
,因为它在shell脚本中被视为注释。
缩进后,我们还有其他方法可以运行命令吗?
感谢您的建议。
答案 0 :(得分:0)
将缩进的此处文档与<<-LABEL
一起使用时,唯一从文档中删除的缩进及其结尾的LABEL
将是实际的制表符(不是空格)。如果您缩进了空格,则外壳将很难找到终止的LABEL
。
答案 1 :(得分:0)
关于散列[#],可以按照“ man ksh”在here-doc中使用它。
<< [-]单词
在删除任何引号后,将shell输入读到与单词相同的一行,或者读到文件末尾。对单词不执行参数替换,命令替换,算术替换或文件名生成。生成的文档称为here文档,成为标准输入。如果引用了单词的任何字符,则文档的字符不作任何解释;否则,将发生参数扩展,命令替换和算术替换,\ new-line将被忽略,并且必须使用\来引用字符\,$,`。如果将-附加到<<之后,则会从单词和文档中删除所有前导制表符。如果将#附加到<<之后,则会从文档的第一行中去除前导空格和制表符,并从剩余的行和单词中去除等效的缩进。为了确定缩进,假定每8列出现一个制表位。
我对ksh88和ksh93进行了比较,看起来像ksh93中引入的“ <<#”的用法。
如果我误解我的话,请纠正我。