为什么我的脚本在缩进后会失败?
Why does my script fail after indentation?
我的代码在缩进后失败了。尝试了很多选择,但没有得到任何令人满意的结果。
#!/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"
的几个选项来删除作为此处文档方法的选项卡,但没有成功。如果我添加散列 <<#EOF
然后它工作。但是,我不想使用 #
,因为它被视为 shell 脚本中的注释。
我们还有其他方法可以 运行 缩进后的命令吗?
感谢您的建议。
当使用带有 <<-LABEL
的缩进文档时,将从文档中删除的唯一缩进及其终止 LABEL
将是实际的制表符(而不是空格)。如果您使用空格缩进,shell 将很难找到终止符 LABEL
。
关于散列 [#],它可以按照“man ksh”在 here-doc 中使用。
<<[-]字数
shell 输入被读取到与 word 相同的行,在删除任何引号后,或者到文件结尾。不对word进行参数替换、命令替换、算术替换或文件名生成。生成的文档称为 here-document,成为标准输入。如果引用了单词的任何字符,则不会对文档的字符进行任何解释;否则,会出现参数扩展、命令替换和算术替换,\new-line 被忽略,并且必须使用 \ 来引用字符 \、$、`。如果 - 附加到 <<,则所有前导制表符都将从 word 和文档中删除。如果将 # 附加到 <<,则前导空格和制表符将从文档的第一行去除,并且从剩余行和 word 去除等效缩进。为了确定缩进,假定每 8 列出现一个制表位。
我比较了 ksh88 和 ksh93,看起来像 ksh93 中引入的“<<#”的用法。
如果我误解了,请纠正我。
我的代码在缩进后失败了。尝试了很多选择,但没有得到任何令人满意的结果。
#!/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"
的几个选项来删除作为此处文档方法的选项卡,但没有成功。如果我添加散列 <<#EOF
然后它工作。但是,我不想使用 #
,因为它被视为 shell 脚本中的注释。
我们还有其他方法可以 运行 缩进后的命令吗?
感谢您的建议。
当使用带有 <<-LABEL
的缩进文档时,将从文档中删除的唯一缩进及其终止 LABEL
将是实际的制表符(而不是空格)。如果您使用空格缩进,shell 将很难找到终止符 LABEL
。
关于散列 [#],它可以按照“man ksh”在 here-doc 中使用。
<<[-]字数
shell 输入被读取到与 word 相同的行,在删除任何引号后,或者到文件结尾。不对word进行参数替换、命令替换、算术替换或文件名生成。生成的文档称为 here-document,成为标准输入。如果引用了单词的任何字符,则不会对文档的字符进行任何解释;否则,会出现参数扩展、命令替换和算术替换,\new-line 被忽略,并且必须使用 \ 来引用字符 \、$、`。如果 - 附加到 <<,则所有前导制表符都将从 word 和文档中删除。如果将 # 附加到 <<,则前导空格和制表符将从文档的第一行去除,并且从剩余行和 word 去除等效缩进。为了确定缩进,假定每 8 列出现一个制表位。
我比较了 ksh88 和 ksh93,看起来像 ksh93 中引入的“<<#”的用法。
如果我误解了,请纠正我。