diff --git a/seatunnel-core/seatunnel-flink-starter/seatunnel-flink-13-starter/src/main/bin/start-seatunnel-flink-13-connector-v2.sh b/seatunnel-core/seatunnel-flink-starter/seatunnel-flink-13-starter/src/main/bin/start-seatunnel-flink-13-connector-v2.sh index f2c61f2193f..83fb65f58b7 100755 --- a/seatunnel-core/seatunnel-flink-starter/seatunnel-flink-13-starter/src/main/bin/start-seatunnel-flink-13-connector-v2.sh +++ b/seatunnel-core/seatunnel-flink-starter/seatunnel-flink-13-starter/src/main/bin/start-seatunnel-flink-13-connector-v2.sh @@ -47,7 +47,7 @@ if [ $# == 0 ] then args="-h" else - args=$@ + args=("$@") fi set +u @@ -60,7 +60,7 @@ fi CLASS_PATH=${APP_DIR}/starter/logging/*:${APP_JAR} -CMD=$(java ${JAVA_OPTS} -cp ${CLASS_PATH} ${APP_MAIN} ${args}) && EXIT_CODE=$? || EXIT_CODE=$? +CMD=$(java ${JAVA_OPTS} -cp ${CLASS_PATH} ${APP_MAIN} "${args[@]}") && EXIT_CODE=$? || EXIT_CODE=$? if [ ${EXIT_CODE} -eq 234 ]; then # print usage echo "${CMD}" diff --git a/seatunnel-core/seatunnel-flink-starter/seatunnel-flink-15-starter/src/main/bin/start-seatunnel-flink-15-connector-v2.sh b/seatunnel-core/seatunnel-flink-starter/seatunnel-flink-15-starter/src/main/bin/start-seatunnel-flink-15-connector-v2.sh index 137b8c043b1..71207262591 100755 --- a/seatunnel-core/seatunnel-flink-starter/seatunnel-flink-15-starter/src/main/bin/start-seatunnel-flink-15-connector-v2.sh +++ b/seatunnel-core/seatunnel-flink-starter/seatunnel-flink-15-starter/src/main/bin/start-seatunnel-flink-15-connector-v2.sh @@ -47,7 +47,7 @@ if [ $# == 0 ] then args="-h" else - args=$@ + args=("$@") fi set +u @@ -60,7 +60,7 @@ fi CLASS_PATH=${APP_DIR}/starter/logging/*:${APP_JAR} -CMD=$(java ${JAVA_OPTS} -cp ${CLASS_PATH} ${APP_MAIN} ${args}) && EXIT_CODE=$? || EXIT_CODE=$? +CMD=$(java ${JAVA_OPTS} -cp ${CLASS_PATH} ${APP_MAIN} "${args[@]}") && EXIT_CODE=$? || EXIT_CODE=$? if [ ${EXIT_CODE} -eq 234 ]; then # print usage echo "${CMD}" diff --git a/seatunnel-core/seatunnel-spark-starter/seatunnel-spark-2-starter/src/main/bin/start-seatunnel-spark-2-connector-v2.sh b/seatunnel-core/seatunnel-spark-starter/seatunnel-spark-2-starter/src/main/bin/start-seatunnel-spark-2-connector-v2.sh index 128f70b9f71..328f7b2c0b4 100755 --- a/seatunnel-core/seatunnel-spark-starter/seatunnel-spark-2-starter/src/main/bin/start-seatunnel-spark-2-connector-v2.sh +++ b/seatunnel-core/seatunnel-spark-starter/seatunnel-spark-2-starter/src/main/bin/start-seatunnel-spark-2-connector-v2.sh @@ -47,7 +47,7 @@ if [ $# == 0 ] then args="-h" else - args=$@ + args=("$@") fi set +u @@ -60,7 +60,7 @@ fi CLASS_PATH=${APP_DIR}/starter/logging/*:${APP_JAR} -CMD=$(java ${JAVA_OPTS} -cp ${CLASS_PATH} ${APP_MAIN} ${args}) && EXIT_CODE=$? || EXIT_CODE=$? +CMD=$(java ${JAVA_OPTS} -cp ${CLASS_PATH} ${APP_MAIN} "${args[@]}") && EXIT_CODE=$? || EXIT_CODE=$? if [ ${EXIT_CODE} -eq 234 ]; then # print usage echo "${CMD}" diff --git a/seatunnel-core/seatunnel-spark-starter/seatunnel-spark-3-starter/src/main/bin/start-seatunnel-spark-3-connector-v2.sh b/seatunnel-core/seatunnel-spark-starter/seatunnel-spark-3-starter/src/main/bin/start-seatunnel-spark-3-connector-v2.sh index 9f4ecc3a4ab..e49e797c70f 100755 --- a/seatunnel-core/seatunnel-spark-starter/seatunnel-spark-3-starter/src/main/bin/start-seatunnel-spark-3-connector-v2.sh +++ b/seatunnel-core/seatunnel-spark-starter/seatunnel-spark-3-starter/src/main/bin/start-seatunnel-spark-3-connector-v2.sh @@ -47,7 +47,7 @@ if [ $# == 0 ] then args="-h" else - args=$@ + args=("$@") fi set +u @@ -60,7 +60,7 @@ fi CLASS_PATH=${APP_DIR}/starter/logging/*:${APP_JAR} -CMD=$(java ${JAVA_OPTS} -cp ${CLASS_PATH} ${APP_MAIN} ${args}) && EXIT_CODE=$? || EXIT_CODE=$? +CMD=$(java ${JAVA_OPTS} -cp ${CLASS_PATH} ${APP_MAIN} "${args[@]}") && EXIT_CODE=$? || EXIT_CODE=$? if [ ${EXIT_CODE} -eq 234 ]; then # print usage echo "${CMD}" diff --git a/seatunnel-core/seatunnel-starter/src/main/bin/seatunnel.sh b/seatunnel-core/seatunnel-starter/src/main/bin/seatunnel.sh index e7754e39759..622fd4abc25 100755 --- a/seatunnel-core/seatunnel-starter/src/main/bin/seatunnel.sh +++ b/seatunnel-core/seatunnel-starter/src/main/bin/seatunnel.sh @@ -47,7 +47,7 @@ if [ $# == 0 ] then args="-h" else - args=$@ + args=("$@") fi set +u @@ -107,4 +107,4 @@ while IFS= read -r line || [[ -n "$line" ]]; do fi done < ${APP_DIR}/config/jvm_client_options -java ${JAVA_OPTS} -cp ${CLASS_PATH} ${APP_MAIN} ${args} \ No newline at end of file +java ${JAVA_OPTS} -cp ${CLASS_PATH} ${APP_MAIN} "${args[@]}" diff --git a/seatunnel-e2e/seatunnel-engine-e2e/connector-seatunnel-e2e-base/src/test/java/org/apache/seatunnel/engine/e2e/UserVariableIT.java b/seatunnel-e2e/seatunnel-engine-e2e/connector-seatunnel-e2e-base/src/test/java/org/apache/seatunnel/engine/e2e/UserVariableIT.java index 03455af2b07..070ce3cc365 100644 --- a/seatunnel-e2e/seatunnel-engine-e2e/connector-seatunnel-e2e-base/src/test/java/org/apache/seatunnel/engine/e2e/UserVariableIT.java +++ b/seatunnel-e2e/seatunnel-engine-e2e/connector-seatunnel-e2e-base/src/test/java/org/apache/seatunnel/engine/e2e/UserVariableIT.java @@ -44,4 +44,15 @@ public void userVariableTest(TestContainer container) throws IOException, Interr container.executeJob("/fake_to_console.variables.conf", variables); Assertions.assertEquals(0, execResult.getExitCode()); } + + @TestTemplate + public void userVariableWithSpaceTest(TestContainer container) + throws IOException, InterruptedException { + List variables = new ArrayList<>(); + String list = "\"AA AA\""; + variables.add("blankSpace=" + list); + Container.ExecResult execResult = + container.executeJob("/fake_variable_with_space_assert.conf", variables); + Assertions.assertEquals(0, execResult.getExitCode()); + } } diff --git a/seatunnel-e2e/seatunnel-engine-e2e/connector-seatunnel-e2e-base/src/test/resources/fake_variable_with_space_assert.conf b/seatunnel-e2e/seatunnel-engine-e2e/connector-seatunnel-e2e-base/src/test/resources/fake_variable_with_space_assert.conf new file mode 100644 index 00000000000..ff52a47d90d --- /dev/null +++ b/seatunnel-e2e/seatunnel-engine-e2e/connector-seatunnel-e2e-base/src/test/resources/fake_variable_with_space_assert.conf @@ -0,0 +1,72 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +###### +###### This config file is a demonstration of streaming processing in seatunnel config +###### + +env { + job.mode = "BATCH" + parallelism = 1 +} + +source { + # This is a example source plugin **only for test and demonstrate the feature source plugin** + FakeSource { + row.num = 1 + schema { + fields { + c_string = string + } + } + rows = [ + { + kind = INSERT + fields = [${blankSpace}] + } + ] + } +} + +sink { + Assert { + rules = + { + row_rules = [ + { + rule_type = MAX_ROW + rule_value = 1 + }, + { + rule_type = MIN_ROW + rule_value = 1 + } + ], + field_rules = [ + { + field_name = c_string + field_type = string + field_value = [ + { + rule_type = NOT_NULL + equals_to = "AA AA" + } + ] + } + ] + } + } +}