题
我做了这个庆典一行代码,我用它来列出与他们充分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
不隶属于 StackOverflow