G'day,
使用shell脚本时遇到语法错误,如下所示:
ssh root@mm-$user-vm-lenny <<EOF
check_dbtag=`grep "<<include /home/$user/cvs/dbtag.conf>>" /etc/dbtag.conf`
if [ "$check_dbtag" == "" ]
then
echo '<<include /home/$user/cvs/dbtag.conf>>' >> /etc/dbtag.conf
fi
EOF
我得到的错误是
-bash: line 21: syntax error near unexpected token 'newline'
-bash: line 21: 'check_dbtag=<<include /home/thomasw/cvs/dbtag.conf>>'
但是,如果我改变行
,我就不会理解了check_dbtag=`grep "<<include /home/$user/cvs/dbtag.conf>>" /etc/dbtag.conf`
到
check_dbtag=`grep '<<include /home/$user/cvs/dbtag.conf>>' /etc/dbtag.conf`
然而$user
不再插值。
如何正确插入变量而没有任何错误?
答案 0 :(得分:2)
在您的机器上评估后退标记,而不是目标机器。我这样做:
check_dbtag=\$(grep "<<include /home/$user/cvs/dbtag.conf>>" /etc/dbtag.conf)
根据您是否希望在主机或目标计算机上评估$user
,您可能还希望使用$
转义\$
。
您需要将$check_dbtag
转移到\$check_dbtag
,因为您希望 在目标计算机上进行评估。