在 groovy jenkins 管道中转义 shell 字符
Escaping shell character in groovy jenkins pipeline
我在 jenkins 管道中转义引号字符时遇到一些问题。例如:
我想使用以下命令通过管道将文本附加到文件中:
openshift.rsh("${podname}", """sh -c 'echo "define( 'WP_HOME', 'http://rabah-test.com' );" >> wp-config.php'""")
并期待将其写入 wp-config.php 文件:
define( 'WP_HOME', 'http://rabah-test.com' );
但不幸的是,我的结果中没有引号:
define( WP_HOME, http://rabah-test.com );
我相信这不是詹金斯的问题。首先在终端中尝试 运行 你的命令。
您的 sh 命令有一个简单的引号,在定义中有一个简单的引号。
我会尝试
sh -c 'echo "define( \'WP_HOME\', \'http://rabah-test.com\' );" >> wp-config.php'
请注意,我没有将定义添加到 wp-config.php 文件,而是试图对默认 WP_HOME 进行版本化并将其替换为 sed
我找到了处理方法。我决定使用双引号并用两个反斜杠转义,而不是使用简单的引号。
像这样:
sh -c 'echo "define( \" WP_HOME \" , \" http://rabah-test.com \" );" >> wp-config.php'
现在可以完美运行了。
我在 jenkins 管道中转义引号字符时遇到一些问题。例如:
我想使用以下命令通过管道将文本附加到文件中:
openshift.rsh("${podname}", """sh -c 'echo "define( 'WP_HOME', 'http://rabah-test.com' );" >> wp-config.php'""")
并期待将其写入 wp-config.php 文件:
define( 'WP_HOME', 'http://rabah-test.com' );
但不幸的是,我的结果中没有引号:
define( WP_HOME, http://rabah-test.com );
我相信这不是詹金斯的问题。首先在终端中尝试 运行 你的命令。 您的 sh 命令有一个简单的引号,在定义中有一个简单的引号。
我会尝试
sh -c 'echo "define( \'WP_HOME\', \'http://rabah-test.com\' );" >> wp-config.php'
请注意,我没有将定义添加到 wp-config.php 文件,而是试图对默认 WP_HOME 进行版本化并将其替换为 sed
我找到了处理方法。我决定使用双引号并用两个反斜杠转义,而不是使用简单的引号。
像这样:
sh -c 'echo "define( \" WP_HOME \" , \" http://rabah-test.com \" );" >> wp-config.php'
现在可以完美运行了。