Linux Groovy sh命令未在my echo命令中包含引号

Linux Groovy sh命令未在my echo命令中包含引号,linux,shell,groovy,escaping,Linux,Shell,Groovy,Escaping,我正试图将hostname写在一个文件的引号内。我正在用Groovy脚本做这件事。这是我的sh Groovy脚本 sh "echo Add \"my-hostname\" \"$HOSTNAME\" >> /etc/test.conf" 我在/etc/test.conf中的预期结果应该是: Add "my-hostname" "linux-base" 但当我执行Groovy脚本时,结果是: Add my-hostname linux-base 有人请在命令脚本中帮助我。两种解决

我正试图将
hostname
写在一个文件的引号内。我正在用Groovy脚本做这件事。这是我的sh Groovy脚本

sh "echo Add \"my-hostname\" \"$HOSTNAME\" >> /etc/test.conf"
我在
/etc/test.conf
中的预期结果应该是:

Add "my-hostname" "linux-base"
但当我执行Groovy脚本时,结果是:

Add my-hostname linux-base
有人请在命令脚本中帮助我。

两种解决方法:

  • 使用单引号:

    sh 'echo Add \"my-hostname\" \"'"$HOSTNAME"'\" >> aa'
    
  • 使用双转义:

    sh "echo Add \\\"my-hostname\\\" \\\"$HOSTNAME\\\" >> aa"
    
  • 我不熟悉groovy,您确定您的命令不需要
    sh-c

    试试这种方法。