如何在HERE文档中使用反引号?

时间:2011-11-01 16:58:08

标签: solaris heredoc

我有一个脚本2:

# This is script2 that is called by script1.    
CURRENT_TOMCAT_PROCESS=`ps -ef | grep java | grep $TOMCAT_USER | grep -v grep | awk '{print $2}'`
echo "---> $CURRENT_TOMCAT_PROCESS"

我在script1中调用script2:

ssh $user@$server 'bash -s' < script2

工作正常。但是我在HERE文档中无法进行反复工作:

ssh $user@$server 'bash -s' <<EOF
     CURRENT_TOMCAT_PROCESS=`ps -ef | grep java | grep $TOMCAT_USER | grep -v grep | awk '{print \$2}'`
     echo "---> $CURRENT_TOMCAT_PROCESS"
EOF

(如果我没有将它分配给变量并且只打印出来它工作正常,但是当我尝试使用反引号将其分配给CURRENT_TOMCAT_PROCESS变量时,它不起作用。)

我该如何做到这一点?

谢谢,

=============================================== ================================

我可以通过以下方式使其工作。涉及到很多逃避:

ssh $user@$server 'bash -s' <<EOF
        CURRENT_TOMCAT_PROCESS="\`ps -ef | grep java | grep $TOMCAT_USER | grep -v grep | awk '{print \$2}'\`"
        echo "---> \$CURRENT_TOMCAT_PROCESS"
EFO

1 个答案:

答案 0 :(得分:2)

我认为逃避是合理的,因为你想将'$'转移到远程站点。你似乎在最后的结果上写了一个错字。我试着再次在这里打字

TOMCATE_USER=foo
ssh $user@$server 'bash -s' <<EOF
CURRENT_TOMCAT_PROCESS="\`ps -ef | grep java | grep $TOMCAT_USER | grep -v grep | awk '{print \$2}'\`"
echo "---> \$CURRENT_TOMCAT_PROCESS"
EOF