This cmd works using shell command on Linux and XShell on Windows, but not XShell on Linux.
$JYTHON/xyz.py --showConfig
This is the value of JYTHON:
JYTHON=$JAVA -jar $JYTHON_JAR -Dpython.path=$PYTHON_LOC $PYTHON_LOC
Using the individual variables works using XShell on Linux:
$JAVA -jar $JYTHON_JAR -Dpython.path=$PYTHON_LOC $PYTHON_LOC/xyz.py --showConfig
I think the reason for this is that linux treats each variable as a single argument. This is the reason Ant has <arg line> vs <arg value> support to distinguish handling of spaces within args on linux. (See: https://ant.apache.org/manual/using.html#arg)
This might help explain the issue. The same test.sh is being invoked first by "execute shell", then by "XShell", with a single TEST parameter having value of: 1, 2 3 4,5\ 6
[workspace] $ /bin/sh -xe /tmp/hudson5780634845144170328.sh
+ test.sh 1, 2 3 '4,5\' 6
SHELL: /bin/bash
Arg count: 5
[workspace] $ test.sh $TEST
SHELL: /bin/bash
Arg count: 1
test.sh:
echo "SHELL: $SHELL"
echo "Arg count: $#"