【发布时间】:2019-08-21 00:26:33
【问题描述】:
我正在尝试编写一个脚本来使用指定的 JRE 运行我的 .jar 文件。似乎相对路径不起作用,所以我认为“相对”意味着相对于脚本本身以外的某个地方,我需要使用 $BASH_SOURCE。无论如何,它的回声很好,但是当需要运行命令来启动 .jar 时,我得到一个“没有这样的文件或目录”错误,并且它显示一个目录在第一个空格处被截断。
我知道这个问题已经被问了一百万次了,但我看到的每一个答案都非常简单,只需添加一些双引号。我已经做到了。我花了最后一个小时添加我能想到的所有可能的荒谬双引号组合,但它什么也没做。充其量我会遇到同样的问题,最坏的情况是它用“??”替换整个字符串。在下面的示例中,我在定义变量时使用了引号,但我也尝试将引号放在最后一行。还是不行。
#!/bin/bash
dir=${BASH_SOURCE%/*}
pathjar=“${dir}/thebox.jar”
echo $pathjar
pathjre=“${dir}/jre/Contents/Home/bin/java”
Echo $pathjre
$pathjre -jar $pathjar
我还尝试将 $pathjar 替换为随机字符串,以解决错误所在。由于错误没有改变,我认为它必须与 $pathjre 变量或两者兼而有之。
【问题讨论】:
-
bash没有任何Echo。希望这只是一个错字.. -
使用
#!/bin/bash -x调试脚本。 -
是的,这是一个错字。我在 Mac 虚拟机中运行它,并用一些愚蠢的记事本来编写它,它会自动更正和大写单词。