我做了这个庆典一行代码,我用它来列出与他们充分paths.This沿运行WebLogic实例效果很好,当我从shell中运行它。

/usr/ucb/ps auwwx | grep weblogic | tr ' ' '\n' | grep security.policy | grep domain | awk -F'=' '{print $2}' | sed 's/weblogic.policy//' | sed 's/security\///' | sort

我试图在一个expect脚本将这一

send "echo Weblogic Processes: ; /usr/ucb/ps auwwx | grep weblogic | tr ' ' '\n' | grep security.policy | grep domain | awk -F'=' '{print \$2}' | sed 's/weblogic.policy//' | sed 's/security\///' | sort ; echo ; echo\r"

但我得到这个误差的sed:-e表达#1,炭13:未知的选项为`s'的

请帮助

有帮助吗?

解决方案

如果没有仔细计算或测试,我会尝试加入后,“安全\”另一\,或可能删除现有之一。

另外,还可以在两个SEDS组合成一个:sed -e 's/weblogic.policy//' -e 's/security\///'

其他提示

大概在\字符

sed 's/security\///'

需要一个额外的逃逸期望上下文,e.g。

send "echo Weblogic Processes: ; /usr/ucb/ps auwwx | grep weblogic | tr ' ' '\n' | grep security.policy | grep domain | awk -F'=' '{print \$2}' | sed 's/weblogic.policy//' | sed 's/security\\///' | sort ; echo ; echo\r"

使用Tcl的{}运营商,而不是你要发送的字符串周围双引号。在Tcl中的{}语法等效于在bash单引号,意为“文字串,不解释它的内容。”

在{}把你想要什么的Tcl /寄期望于子,字符字符,没有多余的报价要求。

我认为这是太复杂,发送到远程主机。相反,把这些命令在一个小的shell脚本和执行。这样一来,你就不会碰到因为报价扩规麻烦,逃避等。

此外,你应该使用ssh代替expect来运行的脚本。 expect是用于运行等,其不具有合适的脚本能力ftp交互式命令。

您可以尝试删除单引号,然后再次运行该命令。

send "....... sed s/weblogic.policy// | sed s/security\/// ..."

其最有可能引用的问题。如果它不正常,尝试通过hlovdal建议

同时,你的一些稍长的命令可以组合

/usr/ucb/ps auwwx |grep weblogic| tr ' ' '\n'|awk '/security.policy/&&/domain/{gsub("weblogic.policy|security","",$2);print $2}|sort 
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top