Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 文件路径中的空格即使使用引号也会打断shell脚本_Bash_Macos_Shell_Path - Fatal编程技术网

Bash 文件路径中的空格即使使用引号也会打断shell脚本

Bash 文件路径中的空格即使使用引号也会打断shell脚本,bash,macos,shell,path,Bash,Macos,Shell,Path,我正试图编写一个脚本,用指定的JRE运行我的.jar文件。似乎相对路径不起作用,所以我认为“相对”意味着相对于脚本本身以外的其他地方,我需要使用$BASH_SOURCE。无论如何,它的回音很好,但是当运行命令来启动.jar时,我得到了一个“没有这样的文件或目录”错误,它显示了一个在第一个空格处被截断的目录 我知道这个问题已经被问了一百万次了,但我看过的每一个答案都很简单,只要加上一些双引号就行了。我已经做到了。我花了最后一个小时添加了我能想到的所有可能的荒谬的双引号组合,但什么也没做。在最好的情

我正试图编写一个脚本,用指定的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虚拟机上运行它,然后把它写在一个愚蠢的记事本上,自动更正并大写单词。