文件路径中的空格即使带引号也会破坏Shell脚本

时间:2019-03-30 03:56:36

标签: bash macos shell path

我正在尝试编写脚本以使用指定的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变量一起出现,或者可能两者都有。

1 个答案:

答案 0 :(得分:0)

我使用的编辑器正在将双引号更改为花式双引号。使用正常的双引号可以正常工作。好吧,我想如果有人偶然发现这个问题并犯了同样的错误,这很有用...