【发布时间】:2021-11-07 04:03:44
【问题描述】:
#!/bin/ksh
set -x
function test_me
{
set -x
date
}
function check_me
{
set -x
ssh HST2 "$(typeset -f test_me); test_me"
}
ssh HST1 "$(typeset -f); check_me"
失败:syntax error at line 5: ;;'出乎意料的`可以帮忙吗?
我正在登录 Oracle RAC 集群。我在 RAC1A 的第一个节点上登录,然后在这个 RAC1 上的各个节点 RAC1B、RAC1C、RAC1D 上准备数据库列表。然后登录每个 RAC1B 并连接到 DB。 $HST1 和 $HST2 只是为了隐藏主机名,你可以放任何你喜欢的东西。 SATH ==> RAC1A ===> RAC1B。其中 HST1 是 RAC1A 而 HST2 是 RAC1B –
如果您有任何 3 个配对服务器,其中 ssh 密钥在 SATH ==> RAC1A ===> RAC1B 中推出,您可以测试上面的代码。 SATH ==> HST1 ===> HST2
【问题讨论】:
-
typeset -f在本地机器上运行时会生成什么?$(typeset -f)在本地机器上运行时会生成什么?另外,Fails with syntax error发生在哪里......本地机器? 2号机?第三台机器? -
本地机器排版 -f .. 显示正确的定义。 HST1 也显示了正确的定义。只有 HST2 显示额外的
;并且失败并出现 ksh 语法错误行 5 `;;'出乎意料 -
如果我用内部函数按字母顺序测试函数,那么它可以工作:` #!/bin/ksh set -x function a { set -x date } function b { set -x ssh HST2 "$ (typeset -fa); a" } ssh HST1 "$(typeset -f); b"`
-
但是如果我以相反的字母顺序测试内部功能,那么它会失败:
#!/bin/ksh set -x function b { set -x date } function a { set -x ssh HST2 "$(typeset -f b); b" } ssh HST1 "$(typeset -f); a" -
不确定它是否是 ksh 错误 .. 但取决于函数的字母顺序。