【问题标题】:Spaces in file path break shell script even with quotes即使带有引号,文件路径中的空格也会破坏 shell 脚本
【发布时间】: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 虚拟机中运行它,并用一些愚蠢的记事本来编写它,它会自动更正和大写单词。

标签: bash macos shell path


【解决方案1】:

我使用的编辑器将我的双引号更改为花哨的双引号。它适用于正常的双引号。好吧,我想这很有用,以防有人偶然发现这个问题并犯了同样的错误......

【讨论】:

    猜你喜欢
    • 2011-10-04
    • 1970-01-01
    • 2013-02-06
    • 2013-05-18
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 2020-06-21
    • 2020-11-02
    相关资源
    最近更新 更多