我正在尝试运行一个bash脚本(名为runScript.sh),该脚本会将变量传递到Java命令中,但是却无法运行(尝试使用带引号和不带引号的变量)(请参见示例1)。
如果我告诉脚本正常运行Java命令,那么它将起作用(请参见示例2)。
java命令在Linux和Windows环境中单独运行时也可以正常工作。我认为这是java读取带有变量的命令的方式的问题。
示例1-这行不通:
#!/bin/bash
MY_SCRIPT="MyScript.jar"
PREVIOUS_FOLDER="../Folder1"
CURRENT_FOLDER="../Folder2"
java -jar $MY_SCRIPT $PREVIOUS_FOLDER $CURRENT_FOLDER
示例2-这将起作用:
#!/bin/bash
java -jar MyScript.jar ../Folder1 ../Folder2
运行两个脚本,并在其前面加上bash -x,结果如下:
示例1-这行不通:
$ bash -x runScript.sh
+ MY_SCRIPT=$'MyScript.jar\r'
+ PREVIOUS_FOLDER=$'../Folder1\r'
+ CURRENT_FOLDER=$'../Folder2\r'
+ echo $'MyScript.jar\r\r'
MyScript.jar
+ echo $'../Folder1\r\r'
../Folder1
+ echo $'../Folder2\r\r'
../Folder2
+ java -jar $'MyScript.jar\r' $'../Folder1\r' $'../Folder2\r'
Error: Unable to access jarfile MyScript.jar
示例2-这将起作用:
$ bash -x runScript.sh
+ java -jar MyScript.jar ../Folder1 ../Folder2