SAMZA-2523: Update Util#envVarEscape to escape more characters (#1359)

Symptom: Job to fail to launch.
Cause: Backslash and grave accent in submission config is not properly escaped, causing launch.sh to break.
Changes: Update Util#envVarEscape to escape backslash as well as grave accent.
Tests: Unit tests updated to test such cases.
API Changes: None
Upgrade Instructions: None
Usage Instructions: None

Co-authored-by: Ke Wu <kwu@linkedin.com>
diff --git a/samza-core/src/main/java/org/apache/samza/util/Util.java b/samza-core/src/main/java/org/apache/samza/util/Util.java
index 875b6da..4b97014 100644
--- a/samza-core/src/main/java/org/apache/samza/util/Util.java
+++ b/samza-core/src/main/java/org/apache/samza/util/Util.java
@@ -45,7 +45,11 @@
    * Make an environment variable string safe to pass.
    */
   public static String envVarEscape(String str) {
-    return str.replace("\"", "\\\"").replace("'", "\\'");
+    return str
+        .replace("\\", "\\\\")
+        .replace("\"", "\\\"")
+        .replace("'", "\\'")
+        .replace("`", "\\`");
   }
 
   public static String getSamzaVersion() {
diff --git a/samza-core/src/test/java/org/apache/samza/util/TestUtil.java b/samza-core/src/test/java/org/apache/samza/util/TestUtil.java
index 2eb2e89..fe38991 100644
--- a/samza-core/src/test/java/org/apache/samza/util/TestUtil.java
+++ b/samza-core/src/test/java/org/apache/samza/util/TestUtil.java
@@ -50,8 +50,8 @@
     String noSpecialCharacters = "hello world 123 .?!";
     assertEquals(noSpecialCharacters, Util.envVarEscape(noSpecialCharacters));
 
-    String withSpecialCharacters = "quotation \" apostrophe '";
-    String escaped = "quotation \\\" apostrophe \\'";
+    String withSpecialCharacters = "quotation \" apostrophe ' backslash \\ grave accent `";
+    String escaped = "quotation \\\" apostrophe \\' backslash \\\\ grave accent \\`";
     assertEquals(escaped, Util.envVarEscape(withSpecialCharacters));
   }